linq-python 0.7.0__tar.gz → 0.8.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 (189) hide show
  1. linq_python-0.8.0/.release-please-manifest.json +3 -0
  2. {linq_python-0.7.0 → linq_python-0.8.0}/CHANGELOG.md +25 -0
  3. {linq_python-0.7.0 → linq_python-0.8.0}/PKG-INFO +1 -1
  4. {linq_python-0.7.0 → linq_python-0.8.0}/pyproject.toml +2 -2
  5. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_version.py +1 -1
  6. linq_python-0.8.0/src/linq/types/chat.py +84 -0
  7. linq_python-0.8.0/src/linq/types/chat_create_response.py +85 -0
  8. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chat_created_webhook_event.py +41 -1
  9. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/message_edited_webhook_event.py +40 -1
  10. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/message_event_v2.py +31 -13
  11. {linq_python-0.7.0 → linq_python-0.8.0}/tests/api_resources/test_contact_card.py +10 -10
  12. linq_python-0.7.0/.release-please-manifest.json +0 -3
  13. linq_python-0.7.0/src/linq/types/chat.py +0 -65
  14. linq_python-0.7.0/src/linq/types/chat_create_response.py +0 -65
  15. {linq_python-0.7.0 → linq_python-0.8.0}/.gitignore +0 -0
  16. {linq_python-0.7.0 → linq_python-0.8.0}/CONTRIBUTING.md +0 -0
  17. {linq_python-0.7.0 → linq_python-0.8.0}/LICENSE +0 -0
  18. {linq_python-0.7.0 → linq_python-0.8.0}/README.md +0 -0
  19. {linq_python-0.7.0 → linq_python-0.8.0}/SECURITY.md +0 -0
  20. {linq_python-0.7.0 → linq_python-0.8.0}/api.md +0 -0
  21. {linq_python-0.7.0 → linq_python-0.8.0}/bin/check-release-environment +0 -0
  22. {linq_python-0.7.0 → linq_python-0.8.0}/bin/publish-pypi +0 -0
  23. {linq_python-0.7.0 → linq_python-0.8.0}/examples/.keep +0 -0
  24. {linq_python-0.7.0 → linq_python-0.8.0}/release-please-config.json +0 -0
  25. {linq_python-0.7.0 → linq_python-0.8.0}/requirements-dev.lock +0 -0
  26. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/__init__.py +0 -0
  27. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_base_client.py +0 -0
  28. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_client.py +0 -0
  29. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_compat.py +0 -0
  30. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_constants.py +0 -0
  31. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_exceptions.py +0 -0
  32. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_files.py +0 -0
  33. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_models.py +0 -0
  34. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_qs.py +0 -0
  35. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_resource.py +0 -0
  36. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_response.py +0 -0
  37. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_streaming.py +0 -0
  38. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_types.py +0 -0
  39. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_utils/__init__.py +0 -0
  40. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_utils/_compat.py +0 -0
  41. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_utils/_datetime_parse.py +0 -0
  42. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_utils/_json.py +0 -0
  43. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_utils/_logs.py +0 -0
  44. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_utils/_path.py +0 -0
  45. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_utils/_proxy.py +0 -0
  46. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_utils/_reflection.py +0 -0
  47. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_utils/_resources_proxy.py +0 -0
  48. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_utils/_streams.py +0 -0
  49. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_utils/_sync.py +0 -0
  50. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_utils/_transform.py +0 -0
  51. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_utils/_typing.py +0 -0
  52. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/_utils/_utils.py +0 -0
  53. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/lib/.keep +0 -0
  54. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/pagination.py +0 -0
  55. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/py.typed +0 -0
  56. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/resources/__init__.py +0 -0
  57. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/resources/attachments.py +0 -0
  58. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/resources/capability.py +0 -0
  59. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/resources/chats/__init__.py +0 -0
  60. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/resources/chats/chats.py +0 -0
  61. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/resources/chats/messages.py +0 -0
  62. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/resources/chats/participants.py +0 -0
  63. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/resources/chats/typing.py +0 -0
  64. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/resources/contact_card.py +0 -0
  65. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/resources/messages.py +0 -0
  66. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/resources/phone_numbers.py +0 -0
  67. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/resources/phonenumbers.py +0 -0
  68. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/resources/webhook_events.py +0 -0
  69. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/resources/webhook_subscriptions.py +0 -0
  70. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/resources/webhooks.py +0 -0
  71. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/__init__.py +0 -0
  72. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/attachment_create_params.py +0 -0
  73. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/attachment_create_response.py +0 -0
  74. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/attachment_retrieve_response.py +0 -0
  75. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/capability_check_RCS_params.py +0 -0
  76. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/capability_check_i_message_params.py +0 -0
  77. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chat_create_params.py +0 -0
  78. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chat_group_icon_update_failed_webhook_event.py +0 -0
  79. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chat_group_icon_updated_webhook_event.py +0 -0
  80. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chat_group_name_update_failed_webhook_event.py +0 -0
  81. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chat_group_name_updated_webhook_event.py +0 -0
  82. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chat_leave_chat_response.py +0 -0
  83. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chat_list_chats_params.py +0 -0
  84. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chat_send_voicememo_params.py +0 -0
  85. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chat_send_voicememo_response.py +0 -0
  86. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chat_typing_indicator_started_webhook_event.py +0 -0
  87. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chat_typing_indicator_stopped_webhook_event.py +0 -0
  88. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chat_update_params.py +0 -0
  89. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chat_update_response.py +0 -0
  90. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chats/__init__.py +0 -0
  91. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chats/message_list_params.py +0 -0
  92. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chats/message_send_params.py +0 -0
  93. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chats/message_send_response.py +0 -0
  94. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chats/participant_add_params.py +0 -0
  95. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chats/participant_add_response.py +0 -0
  96. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chats/participant_remove_params.py +0 -0
  97. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chats/participant_remove_response.py +0 -0
  98. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/chats/sent_message.py +0 -0
  99. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/contact_card_create_params.py +0 -0
  100. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/contact_card_retrieve_params.py +0 -0
  101. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/contact_card_retrieve_response.py +0 -0
  102. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/contact_card_update_params.py +0 -0
  103. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/events_webhook_event.py +0 -0
  104. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/handle_check_response.py +0 -0
  105. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/link_part_param.py +0 -0
  106. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/media_part_param.py +0 -0
  107. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/message.py +0 -0
  108. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/message_add_reaction_params.py +0 -0
  109. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/message_add_reaction_response.py +0 -0
  110. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/message_content_param.py +0 -0
  111. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/message_delivered_webhook_event.py +0 -0
  112. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/message_effect.py +0 -0
  113. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/message_effect_param.py +0 -0
  114. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/message_failed_webhook_event.py +0 -0
  115. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/message_list_messages_thread_params.py +0 -0
  116. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/message_read_webhook_event.py +0 -0
  117. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/message_received_webhook_event.py +0 -0
  118. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/message_sent_webhook_event.py +0 -0
  119. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/message_update_params.py +0 -0
  120. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/participant_added_webhook_event.py +0 -0
  121. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/participant_removed_webhook_event.py +0 -0
  122. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/phone_number_list_response.py +0 -0
  123. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/phone_number_status_updated_webhook_event.py +0 -0
  124. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/phonenumber_list_response.py +0 -0
  125. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/reaction_added_webhook_event.py +0 -0
  126. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/reaction_event_base.py +0 -0
  127. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/reaction_removed_webhook_event.py +0 -0
  128. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/reply_to.py +0 -0
  129. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/reply_to_param.py +0 -0
  130. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/schemas_media_part_response.py +0 -0
  131. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/schemas_message_effect.py +0 -0
  132. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/schemas_text_part_response.py +0 -0
  133. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/set_contact_card.py +0 -0
  134. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/shared/__init__.py +0 -0
  135. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/shared/chat_handle.py +0 -0
  136. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/shared/link_part_response.py +0 -0
  137. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/shared/media_part_response.py +0 -0
  138. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/shared/reaction.py +0 -0
  139. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/shared/reaction_type.py +0 -0
  140. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/shared/service_type.py +0 -0
  141. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/shared/text_decoration.py +0 -0
  142. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/shared/text_part_response.py +0 -0
  143. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/shared_params/__init__.py +0 -0
  144. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/shared_params/reaction_type.py +0 -0
  145. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/shared_params/service_type.py +0 -0
  146. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/shared_params/text_decoration.py +0 -0
  147. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/supported_content_type.py +0 -0
  148. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/text_part_param.py +0 -0
  149. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/webhook_event_list_response.py +0 -0
  150. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/webhook_event_type.py +0 -0
  151. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/webhook_subscription.py +0 -0
  152. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/webhook_subscription_create_params.py +0 -0
  153. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/webhook_subscription_create_response.py +0 -0
  154. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/webhook_subscription_list_response.py +0 -0
  155. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq/types/webhook_subscription_update_params.py +0 -0
  156. {linq_python-0.7.0 → linq_python-0.8.0}/src/linq_api_v3/lib/.keep +0 -0
  157. {linq_python-0.7.0 → linq_python-0.8.0}/tests/__init__.py +0 -0
  158. {linq_python-0.7.0 → linq_python-0.8.0}/tests/api_resources/__init__.py +0 -0
  159. {linq_python-0.7.0 → linq_python-0.8.0}/tests/api_resources/chats/__init__.py +0 -0
  160. {linq_python-0.7.0 → linq_python-0.8.0}/tests/api_resources/chats/test_messages.py +0 -0
  161. {linq_python-0.7.0 → linq_python-0.8.0}/tests/api_resources/chats/test_participants.py +0 -0
  162. {linq_python-0.7.0 → linq_python-0.8.0}/tests/api_resources/chats/test_typing.py +0 -0
  163. {linq_python-0.7.0 → linq_python-0.8.0}/tests/api_resources/test_attachments.py +0 -0
  164. {linq_python-0.7.0 → linq_python-0.8.0}/tests/api_resources/test_capability.py +0 -0
  165. {linq_python-0.7.0 → linq_python-0.8.0}/tests/api_resources/test_chats.py +0 -0
  166. {linq_python-0.7.0 → linq_python-0.8.0}/tests/api_resources/test_messages.py +0 -0
  167. {linq_python-0.7.0 → linq_python-0.8.0}/tests/api_resources/test_phone_numbers.py +0 -0
  168. {linq_python-0.7.0 → linq_python-0.8.0}/tests/api_resources/test_phonenumbers.py +0 -0
  169. {linq_python-0.7.0 → linq_python-0.8.0}/tests/api_resources/test_webhook_events.py +0 -0
  170. {linq_python-0.7.0 → linq_python-0.8.0}/tests/api_resources/test_webhook_subscriptions.py +0 -0
  171. {linq_python-0.7.0 → linq_python-0.8.0}/tests/api_resources/test_webhooks.py +0 -0
  172. {linq_python-0.7.0 → linq_python-0.8.0}/tests/conftest.py +0 -0
  173. {linq_python-0.7.0 → linq_python-0.8.0}/tests/sample_file.txt +0 -0
  174. {linq_python-0.7.0 → linq_python-0.8.0}/tests/test_client.py +0 -0
  175. {linq_python-0.7.0 → linq_python-0.8.0}/tests/test_extract_files.py +0 -0
  176. {linq_python-0.7.0 → linq_python-0.8.0}/tests/test_files.py +0 -0
  177. {linq_python-0.7.0 → linq_python-0.8.0}/tests/test_models.py +0 -0
  178. {linq_python-0.7.0 → linq_python-0.8.0}/tests/test_qs.py +0 -0
  179. {linq_python-0.7.0 → linq_python-0.8.0}/tests/test_required_args.py +0 -0
  180. {linq_python-0.7.0 → linq_python-0.8.0}/tests/test_response.py +0 -0
  181. {linq_python-0.7.0 → linq_python-0.8.0}/tests/test_streaming.py +0 -0
  182. {linq_python-0.7.0 → linq_python-0.8.0}/tests/test_transform.py +0 -0
  183. {linq_python-0.7.0 → linq_python-0.8.0}/tests/test_utils/test_datetime_parse.py +0 -0
  184. {linq_python-0.7.0 → linq_python-0.8.0}/tests/test_utils/test_json.py +0 -0
  185. {linq_python-0.7.0 → linq_python-0.8.0}/tests/test_utils/test_path.py +0 -0
  186. {linq_python-0.7.0 → linq_python-0.8.0}/tests/test_utils/test_proxy.py +0 -0
  187. {linq_python-0.7.0 → linq_python-0.8.0}/tests/test_utils/test_typing.py +0 -0
  188. {linq_python-0.7.0 → linq_python-0.8.0}/tests/utils.py +0 -0
  189. {linq_python-0.7.0 → linq_python-0.8.0}/uv.lock +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.8.0"
3
+ }
@@ -1,5 +1,30 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.8.0 (2026-05-07)
4
+
5
+ Full Changelog: [v0.7.0...v0.8.0](https://github.com/linq-team/linq-python/compare/v0.7.0...v0.8.0)
6
+
7
+ ### Features
8
+
9
+ * **chat-service:** expose health_score.updated_at on chat reads + webhooks ([ae5f146](https://github.com/linq-team/linq-python/commit/ae5f1461f6468c48ec88d999d59293e2f364ddd6))
10
+ * remove health_score from synapse — health_status is the contract ([5ec27d1](https://github.com/linq-team/linq-python/commit/5ec27d1544c85532b8d0344b3108a88cf474db90))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * **chat-service:** stamp health_status from risk-service sync reply ([ff22296](https://github.com/linq-team/linq-python/commit/ff222969e755bd20e352de665b5e7fe47ea99705))
16
+
17
+
18
+ ### Chores
19
+
20
+ * **internal:** reformat pyproject.toml ([3ab97d9](https://github.com/linq-team/linq-python/commit/3ab97d9f5daea08054fba6086ca2c1849289d8ff))
21
+
22
+
23
+ ### Documentation
24
+
25
+ * **openapi:** add HealthStatus [BETA] + deprecate HealthScore ([d4e3711](https://github.com/linq-team/linq-python/commit/d4e37118b71348796cb029bed6f3b831c3996941))
26
+ * **openapi:** add named examples to unblock docs OpExample ([6a37d71](https://github.com/linq-team/linq-python/commit/6a37d71c0aa57feefc85810a5012da74153b835f))
27
+
3
28
  ## 0.7.0 (2026-04-30)
4
29
 
5
30
  Full Changelog: [v0.6.0...v0.7.0](https://github.com/linq-team/linq-python/compare/v0.6.0...v0.7.0)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: linq-python
3
- Version: 0.7.0
3
+ Version: 0.8.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.7.0"
3
+ version = "0.8.0"
4
4
  description = "The official Python library for the linq-api-v3 API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -154,7 +154,7 @@ show_error_codes = true
154
154
  #
155
155
  # We also exclude our `tests` as mypy doesn't always infer
156
156
  # types correctly and Pyright will still catch any type errors.
157
- exclude = ['src/linq/_files.py', '_dev/.*.py', 'tests/.*']
157
+ exclude = ["src/linq/_files.py", "_dev/.*.py", "tests/.*"]
158
158
 
159
159
  strict_equality = true
160
160
  implicit_reexport = true
@@ -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.7.0" # x-release-please-version
4
+ __version__ = "0.8.0" # x-release-please-version
@@ -0,0 +1,84 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+ from datetime import datetime
5
+ from typing_extensions import Literal
6
+
7
+ from .._models import BaseModel
8
+ from .shared.chat_handle import ChatHandle
9
+ from .shared.service_type import ServiceType
10
+
11
+ __all__ = ["Chat", "HealthStatus"]
12
+
13
+
14
+ class HealthStatus(BaseModel):
15
+ """**[BETA]** Current health for a chat.
16
+
17
+ Always present — chats start at `healthy` and may shift based on engagement and delivery signals on the conversation. Many `at_risk` or `critical` chats on a single line increase the risk of line flagging.
18
+
19
+ Switch on `status` to gate sends or surface line health in your UI — the enum is the long-term contract. Each status carries a `doc_url` that deep-links to the relevant section of the Chat Health guide.
20
+
21
+ See the [Chat Health guide](/guides/chats/chat-health) for what each status means and how to react.
22
+ """
23
+
24
+ doc_url: str
25
+ """Deep-link to the relevant section of the Chat Health guide for this status."""
26
+
27
+ status: Literal["healthy", "at_risk", "critical", "opted_out"]
28
+ """Current health bucket for the chat.
29
+
30
+ See the [Chat Health guide](/guides/chats/chat-health) for what each value means
31
+ and how to react. `doc_url` deep-links to the relevant section.
32
+ """
33
+
34
+ updated_at: datetime
35
+ """When this status last changed."""
36
+
37
+
38
+ class Chat(BaseModel):
39
+ id: str
40
+ """Unique identifier for the chat"""
41
+
42
+ created_at: datetime
43
+ """When the chat was created"""
44
+
45
+ display_name: Optional[str] = None
46
+ """Display name for the chat.
47
+
48
+ Defaults to a comma-separated list of recipient handles. Can be updated for
49
+ group chats.
50
+ """
51
+
52
+ handles: List[ChatHandle]
53
+ """List of chat participants with full handle details.
54
+
55
+ Always contains at least two handles (your phone number and the other
56
+ participant).
57
+ """
58
+
59
+ health_status: HealthStatus
60
+ """**[BETA]** Current health for a chat.
61
+
62
+ Always present — chats start at `healthy` and may shift based on engagement and
63
+ delivery signals on the conversation. Many `at_risk` or `critical` chats on a
64
+ single line increase the risk of line flagging.
65
+
66
+ Switch on `status` to gate sends or surface line health in your UI — the enum is
67
+ the long-term contract. Each status carries a `doc_url` that deep-links to the
68
+ relevant section of the Chat Health guide.
69
+
70
+ See the [Chat Health guide](/guides/chats/chat-health) for what each status
71
+ means and how to react.
72
+ """
73
+
74
+ is_archived: bool
75
+ """Whether the chat is archived"""
76
+
77
+ is_group: bool
78
+ """Whether this is a group chat"""
79
+
80
+ updated_at: datetime
81
+ """When the chat was last updated"""
82
+
83
+ service: Optional[ServiceType] = None
84
+ """Messaging service type"""
@@ -0,0 +1,85 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Optional
4
+ from datetime import datetime
5
+ from typing_extensions import Literal
6
+
7
+ from .._models import BaseModel
8
+ from .chats.sent_message import SentMessage
9
+ from .shared.chat_handle import ChatHandle
10
+ from .shared.service_type import ServiceType
11
+
12
+ __all__ = ["ChatCreateResponse", "Chat", "ChatHealthStatus"]
13
+
14
+
15
+ class ChatHealthStatus(BaseModel):
16
+ """**[BETA]** Current health for a chat.
17
+
18
+ Always present — chats start at `healthy` and may shift based on engagement and delivery signals on the conversation. Many `at_risk` or `critical` chats on a single line increase the risk of line flagging.
19
+
20
+ Switch on `status` to gate sends or surface line health in your UI — the enum is the long-term contract. Each status carries a `doc_url` that deep-links to the relevant section of the Chat Health guide.
21
+
22
+ See the [Chat Health guide](/guides/chats/chat-health) for what each status means and how to react.
23
+ """
24
+
25
+ doc_url: str
26
+ """Deep-link to the relevant section of the Chat Health guide for this status."""
27
+
28
+ status: Literal["healthy", "at_risk", "critical", "opted_out"]
29
+ """Current health bucket for the chat.
30
+
31
+ See the [Chat Health guide](/guides/chats/chat-health) for what each value means
32
+ and how to react. `doc_url` deep-links to the relevant section.
33
+ """
34
+
35
+ updated_at: datetime
36
+ """When this status last changed."""
37
+
38
+
39
+ class Chat(BaseModel):
40
+ id: str
41
+ """Unique identifier for the created chat (UUID)"""
42
+
43
+ display_name: Optional[str] = None
44
+ """Display name for the chat.
45
+
46
+ Defaults to a comma-separated list of recipient handles. Can be updated for
47
+ group chats.
48
+ """
49
+
50
+ handles: List[ChatHandle]
51
+ """List of participants in the chat.
52
+
53
+ Always contains at least two handles (your phone number and the other
54
+ participant).
55
+ """
56
+
57
+ health_status: ChatHealthStatus
58
+ """**[BETA]** Current health for a chat.
59
+
60
+ Always present — chats start at `healthy` and may shift based on engagement and
61
+ delivery signals on the conversation. Many `at_risk` or `critical` chats on a
62
+ single line increase the risk of line flagging.
63
+
64
+ Switch on `status` to gate sends or surface line health in your UI — the enum is
65
+ the long-term contract. Each status carries a `doc_url` that deep-links to the
66
+ relevant section of the Chat Health guide.
67
+
68
+ See the [Chat Health guide](/guides/chats/chat-health) for what each status
69
+ means and how to react.
70
+ """
71
+
72
+ is_group: bool
73
+ """Whether this is a group chat"""
74
+
75
+ message: SentMessage
76
+ """A message that was sent (used in CreateChat and SendMessage responses)"""
77
+
78
+ service: ServiceType
79
+ """Messaging service type"""
80
+
81
+
82
+ class ChatCreateResponse(BaseModel):
83
+ """Response for creating a new chat with an initial message"""
84
+
85
+ chat: Chat
@@ -2,13 +2,38 @@
2
2
 
3
3
  from typing import List, Optional
4
4
  from datetime import datetime
5
+ from typing_extensions import Literal
5
6
 
6
7
  from .._models import BaseModel
7
8
  from .shared.chat_handle import ChatHandle
8
9
  from .webhook_event_type import WebhookEventType
9
10
  from .shared.service_type import ServiceType
10
11
 
11
- __all__ = ["ChatCreatedWebhookEvent", "Data"]
12
+ __all__ = ["ChatCreatedWebhookEvent", "Data", "DataHealthStatus"]
13
+
14
+
15
+ class DataHealthStatus(BaseModel):
16
+ """**[BETA]** Current health for a chat.
17
+
18
+ Always present — chats start at `healthy` and may shift based on engagement and delivery signals on the conversation. Many `at_risk` or `critical` chats on a single line increase the risk of line flagging.
19
+
20
+ Switch on `status` to gate sends or surface line health in your UI — the enum is the long-term contract. Each status carries a `doc_url` that deep-links to the relevant section of the Chat Health guide.
21
+
22
+ See the [Chat Health guide](/guides/chats/chat-health) for what each status means and how to react.
23
+ """
24
+
25
+ doc_url: str
26
+ """Deep-link to the relevant section of the Chat Health guide for this status."""
27
+
28
+ status: Literal["healthy", "at_risk", "critical", "opted_out"]
29
+ """Current health bucket for the chat.
30
+
31
+ See the [Chat Health guide](/guides/chats/chat-health) for what each value means
32
+ and how to react. `doc_url` deep-links to the relevant section.
33
+ """
34
+
35
+ updated_at: datetime
36
+ """When this status last changed."""
12
37
 
13
38
 
14
39
  class Data(BaseModel):
@@ -37,6 +62,21 @@ class Data(BaseModel):
37
62
  participant).
38
63
  """
39
64
 
65
+ health_status: DataHealthStatus
66
+ """**[BETA]** Current health for a chat.
67
+
68
+ Always present — chats start at `healthy` and may shift based on engagement and
69
+ delivery signals on the conversation. Many `at_risk` or `critical` chats on a
70
+ single line increase the risk of line flagging.
71
+
72
+ Switch on `status` to gate sends or surface line health in your UI — the enum is
73
+ the long-term contract. Each status carries a `doc_url` that deep-links to the
74
+ relevant section of the Chat Health guide.
75
+
76
+ See the [Chat Health guide](/guides/chats/chat-health) for what each status
77
+ means and how to react.
78
+ """
79
+
40
80
  is_group: bool
41
81
  """Whether this is a group chat"""
42
82
 
@@ -7,7 +7,31 @@ from .._models import BaseModel
7
7
  from .shared.chat_handle import ChatHandle
8
8
  from .webhook_event_type import WebhookEventType
9
9
 
10
- __all__ = ["MessageEditedWebhookEvent", "Data", "DataChat", "DataPart"]
10
+ __all__ = ["MessageEditedWebhookEvent", "Data", "DataChat", "DataChatHealthStatus", "DataPart"]
11
+
12
+
13
+ class DataChatHealthStatus(BaseModel):
14
+ """**[BETA]** Current health for a chat.
15
+
16
+ Always present — chats start at `healthy` and may shift based on engagement and delivery signals on the conversation. Many `at_risk` or `critical` chats on a single line increase the risk of line flagging.
17
+
18
+ Switch on `status` to gate sends or surface line health in your UI — the enum is the long-term contract. Each status carries a `doc_url` that deep-links to the relevant section of the Chat Health guide.
19
+
20
+ See the [Chat Health guide](/guides/chats/chat-health) for what each status means and how to react.
21
+ """
22
+
23
+ doc_url: str
24
+ """Deep-link to the relevant section of the Chat Health guide for this status."""
25
+
26
+ status: Literal["healthy", "at_risk", "critical", "opted_out"]
27
+ """Current health bucket for the chat.
28
+
29
+ See the [Chat Health guide](/guides/chats/chat-health) for what each value means
30
+ and how to react. `doc_url` deep-links to the relevant section.
31
+ """
32
+
33
+ updated_at: datetime
34
+ """When this status last changed."""
11
35
 
12
36
 
13
37
  class DataChat(BaseModel):
@@ -16,6 +40,21 @@ class DataChat(BaseModel):
16
40
  id: str
17
41
  """Chat identifier"""
18
42
 
43
+ health_status: DataChatHealthStatus
44
+ """**[BETA]** Current health for a chat.
45
+
46
+ Always present — chats start at `healthy` and may shift based on engagement and
47
+ delivery signals on the conversation. Many `at_risk` or `critical` chats on a
48
+ single line increase the risk of line flagging.
49
+
50
+ Switch on `status` to gate sends or surface line health in your UI — the enum is
51
+ the long-term contract. Each status carries a `doc_url` that deep-links to the
52
+ relevant section of the Chat Health guide.
53
+
54
+ See the [Chat Health guide](/guides/chats/chat-health) for what each status
55
+ means and how to react.
56
+ """
57
+
19
58
  is_group: bool
20
59
  """Whether this is a group chat"""
21
60
 
@@ -12,21 +12,31 @@ from .schemas_message_effect import SchemasMessageEffect
12
12
  from .schemas_text_part_response import SchemasTextPartResponse
13
13
  from .schemas_media_part_response import SchemasMediaPartResponse
14
14
 
15
- __all__ = ["MessageEventV2", "Chat", "ChatHealthScore", "Part", "PartSchemasLinkPartResponse", "ReplyTo"]
15
+ __all__ = ["MessageEventV2", "Chat", "ChatHealthStatus", "Part", "PartSchemasLinkPartResponse", "ReplyTo"]
16
16
 
17
17
 
18
- class ChatHealthScore(BaseModel):
19
- """**[BETA]** Health assessment for a chat.
18
+ class ChatHealthStatus(BaseModel):
19
+ """**[BETA]** Current health for a chat.
20
20
 
21
- Higher `score` is healthier.
22
- `null` when a score isn't available yet. Scoring may change during beta.
21
+ Always present — chats start at `healthy` and may shift based on engagement and delivery signals on the conversation. Many `at_risk` or `critical` chats on a single line increase the risk of line flagging.
22
+
23
+ Switch on `status` to gate sends or surface line health in your UI — the enum is the long-term contract. Each status carries a `doc_url` that deep-links to the relevant section of the Chat Health guide.
24
+
25
+ See the [Chat Health guide](/guides/chats/chat-health) for what each status means and how to react.
23
26
  """
24
27
 
25
- reason: str
26
- """Short summary of what's affecting the score. Empty when the score is 100."""
28
+ doc_url: str
29
+ """Deep-link to the relevant section of the Chat Health guide for this status."""
27
30
 
28
- score: int
29
- """Health score from 0 to 100. Higher is healthier."""
31
+ status: Literal["healthy", "at_risk", "critical", "opted_out"]
32
+ """Current health bucket for the chat.
33
+
34
+ See the [Chat Health guide](/guides/chats/chat-health) for what each value means
35
+ and how to react. `doc_url` deep-links to the relevant section.
36
+ """
37
+
38
+ updated_at: datetime
39
+ """When this status last changed."""
30
40
 
31
41
 
32
42
  class Chat(BaseModel):
@@ -35,11 +45,19 @@ class Chat(BaseModel):
35
45
  id: str
36
46
  """Chat identifier"""
37
47
 
38
- health_score: Optional[ChatHealthScore] = None
39
- """**[BETA]** Health assessment for a chat.
48
+ health_status: ChatHealthStatus
49
+ """**[BETA]** Current health for a chat.
50
+
51
+ Always present — chats start at `healthy` and may shift based on engagement and
52
+ delivery signals on the conversation. Many `at_risk` or `critical` chats on a
53
+ single line increase the risk of line flagging.
54
+
55
+ Switch on `status` to gate sends or surface line health in your UI — the enum is
56
+ the long-term contract. Each status carries a `doc_url` that deep-links to the
57
+ relevant section of the Chat Health guide.
40
58
 
41
- Higher `score` is healthier. `null` when a score isn't available yet. Scoring
42
- may change during beta.
59
+ See the [Chat Health guide](/guides/chats/chat-health) for what each status
60
+ means and how to react.
43
61
  """
44
62
 
45
63
  is_group: Optional[bool] = None
@@ -24,7 +24,7 @@ class TestContactCard:
24
24
  @parametrize
25
25
  def test_method_create(self, client: LinqAPIV3) -> None:
26
26
  contact_card = client.contact_card.create(
27
- first_name="John",
27
+ first_name="Acme",
28
28
  phone_number="+15551234567",
29
29
  )
30
30
  assert_matches_type(SetContactCard, contact_card, path=["response"])
@@ -33,10 +33,10 @@ class TestContactCard:
33
33
  @parametrize
34
34
  def test_method_create_with_all_params(self, client: LinqAPIV3) -> None:
35
35
  contact_card = client.contact_card.create(
36
- first_name="John",
36
+ first_name="Acme",
37
37
  phone_number="+15551234567",
38
38
  image_url="https://cdn.linqapp.com/contact-card/example.jpg",
39
- last_name="Doe",
39
+ last_name="Support",
40
40
  )
41
41
  assert_matches_type(SetContactCard, contact_card, path=["response"])
42
42
 
@@ -44,7 +44,7 @@ class TestContactCard:
44
44
  @parametrize
45
45
  def test_raw_response_create(self, client: LinqAPIV3) -> None:
46
46
  response = client.contact_card.with_raw_response.create(
47
- first_name="John",
47
+ first_name="Acme",
48
48
  phone_number="+15551234567",
49
49
  )
50
50
 
@@ -57,7 +57,7 @@ class TestContactCard:
57
57
  @parametrize
58
58
  def test_streaming_response_create(self, client: LinqAPIV3) -> None:
59
59
  with client.contact_card.with_streaming_response.create(
60
- first_name="John",
60
+ first_name="Acme",
61
61
  phone_number="+15551234567",
62
62
  ) as response:
63
63
  assert not response.is_closed
@@ -159,7 +159,7 @@ class TestAsyncContactCard:
159
159
  @parametrize
160
160
  async def test_method_create(self, async_client: AsyncLinqAPIV3) -> None:
161
161
  contact_card = await async_client.contact_card.create(
162
- first_name="John",
162
+ first_name="Acme",
163
163
  phone_number="+15551234567",
164
164
  )
165
165
  assert_matches_type(SetContactCard, contact_card, path=["response"])
@@ -168,10 +168,10 @@ class TestAsyncContactCard:
168
168
  @parametrize
169
169
  async def test_method_create_with_all_params(self, async_client: AsyncLinqAPIV3) -> None:
170
170
  contact_card = await async_client.contact_card.create(
171
- first_name="John",
171
+ first_name="Acme",
172
172
  phone_number="+15551234567",
173
173
  image_url="https://cdn.linqapp.com/contact-card/example.jpg",
174
- last_name="Doe",
174
+ last_name="Support",
175
175
  )
176
176
  assert_matches_type(SetContactCard, contact_card, path=["response"])
177
177
 
@@ -179,7 +179,7 @@ class TestAsyncContactCard:
179
179
  @parametrize
180
180
  async def test_raw_response_create(self, async_client: AsyncLinqAPIV3) -> None:
181
181
  response = await async_client.contact_card.with_raw_response.create(
182
- first_name="John",
182
+ first_name="Acme",
183
183
  phone_number="+15551234567",
184
184
  )
185
185
 
@@ -192,7 +192,7 @@ class TestAsyncContactCard:
192
192
  @parametrize
193
193
  async def test_streaming_response_create(self, async_client: AsyncLinqAPIV3) -> None:
194
194
  async with async_client.contact_card.with_streaming_response.create(
195
- first_name="John",
195
+ first_name="Acme",
196
196
  phone_number="+15551234567",
197
197
  ) as response:
198
198
  assert not response.is_closed
@@ -1,3 +0,0 @@
1
- {
2
- ".": "0.7.0"
3
- }
@@ -1,65 +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 datetime import datetime
5
-
6
- from .._models import BaseModel
7
- from .shared.chat_handle import ChatHandle
8
- from .shared.service_type import ServiceType
9
-
10
- __all__ = ["Chat", "HealthScore"]
11
-
12
-
13
- class HealthScore(BaseModel):
14
- """**[BETA]** Health assessment for a chat.
15
-
16
- Higher `score` is healthier.
17
- `null` when a score isn't available yet. Scoring may change during beta.
18
- """
19
-
20
- reason: str
21
- """Short summary of what's affecting the score. Empty when the score is 100."""
22
-
23
- score: int
24
- """Health score from 0 to 100. Higher is healthier."""
25
-
26
-
27
- class Chat(BaseModel):
28
- id: str
29
- """Unique identifier for the chat"""
30
-
31
- created_at: datetime
32
- """When the chat was created"""
33
-
34
- display_name: Optional[str] = None
35
- """Display name for the chat.
36
-
37
- Defaults to a comma-separated list of recipient handles. Can be updated for
38
- group chats.
39
- """
40
-
41
- handles: List[ChatHandle]
42
- """List of chat participants with full handle details.
43
-
44
- Always contains at least two handles (your phone number and the other
45
- participant).
46
- """
47
-
48
- is_archived: bool
49
- """Whether the chat is archived"""
50
-
51
- is_group: bool
52
- """Whether this is a group chat"""
53
-
54
- updated_at: datetime
55
- """When the chat was last updated"""
56
-
57
- health_score: Optional[HealthScore] = None
58
- """**[BETA]** Health assessment for a chat.
59
-
60
- Higher `score` is healthier. `null` when a score isn't available yet. Scoring
61
- may change during beta.
62
- """
63
-
64
- service: Optional[ServiceType] = None
65
- """Messaging service type"""
@@ -1,65 +0,0 @@
1
- # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
-
3
- from typing import List, Optional
4
-
5
- from .._models import BaseModel
6
- from .chats.sent_message import SentMessage
7
- from .shared.chat_handle import ChatHandle
8
- from .shared.service_type import ServiceType
9
-
10
- __all__ = ["ChatCreateResponse", "Chat", "ChatHealthScore"]
11
-
12
-
13
- class ChatHealthScore(BaseModel):
14
- """**[BETA]** Health assessment for a chat.
15
-
16
- Higher `score` is healthier.
17
- `null` when a score isn't available yet. Scoring may change during beta.
18
- """
19
-
20
- reason: str
21
- """Short summary of what's affecting the score. Empty when the score is 100."""
22
-
23
- score: int
24
- """Health score from 0 to 100. Higher is healthier."""
25
-
26
-
27
- class Chat(BaseModel):
28
- id: str
29
- """Unique identifier for the created chat (UUID)"""
30
-
31
- display_name: Optional[str] = None
32
- """Display name for the chat.
33
-
34
- Defaults to a comma-separated list of recipient handles. Can be updated for
35
- group chats.
36
- """
37
-
38
- handles: List[ChatHandle]
39
- """List of participants in the chat.
40
-
41
- Always contains at least two handles (your phone number and the other
42
- participant).
43
- """
44
-
45
- is_group: bool
46
- """Whether this is a group chat"""
47
-
48
- message: SentMessage
49
- """A message that was sent (used in CreateChat and SendMessage responses)"""
50
-
51
- service: ServiceType
52
- """Messaging service type"""
53
-
54
- health_score: Optional[ChatHealthScore] = None
55
- """**[BETA]** Health assessment for a chat.
56
-
57
- Higher `score` is healthier. `null` when a score isn't available yet. Scoring
58
- may change during beta.
59
- """
60
-
61
-
62
- class ChatCreateResponse(BaseModel):
63
- """Response for creating a new chat with an initial message"""
64
-
65
- chat: Chat
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes