linq-python 0.2.1__tar.gz → 0.2.3__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 (188) hide show
  1. linq_python-0.2.3/.release-please-manifest.json +3 -0
  2. {linq_python-0.2.1 → linq_python-0.2.3}/CHANGELOG.md +17 -0
  3. {linq_python-0.2.1 → linq_python-0.2.3}/PKG-INFO +1 -1
  4. {linq_python-0.2.1 → linq_python-0.2.3}/pyproject.toml +1 -1
  5. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_base_client.py +4 -0
  6. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_version.py +1 -1
  7. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/resources/attachments.py +8 -0
  8. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/attachment_create_params.py +4 -0
  9. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/attachment_retrieve_response.py +4 -0
  10. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chats/sent_message.py +5 -2
  11. {linq_python-0.2.1 → linq_python-0.2.3}/tests/test_client.py +48 -0
  12. linq_python-0.2.1/.release-please-manifest.json +0 -3
  13. {linq_python-0.2.1 → linq_python-0.2.3}/.gitignore +0 -0
  14. {linq_python-0.2.1 → linq_python-0.2.3}/CONTRIBUTING.md +0 -0
  15. {linq_python-0.2.1 → linq_python-0.2.3}/LICENSE +0 -0
  16. {linq_python-0.2.1 → linq_python-0.2.3}/README.md +0 -0
  17. {linq_python-0.2.1 → linq_python-0.2.3}/SECURITY.md +0 -0
  18. {linq_python-0.2.1 → linq_python-0.2.3}/api.md +0 -0
  19. {linq_python-0.2.1 → linq_python-0.2.3}/bin/check-release-environment +0 -0
  20. {linq_python-0.2.1 → linq_python-0.2.3}/bin/publish-pypi +0 -0
  21. {linq_python-0.2.1 → linq_python-0.2.3}/examples/.keep +0 -0
  22. {linq_python-0.2.1 → linq_python-0.2.3}/release-please-config.json +0 -0
  23. {linq_python-0.2.1 → linq_python-0.2.3}/requirements-dev.lock +0 -0
  24. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/__init__.py +0 -0
  25. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_client.py +0 -0
  26. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_compat.py +0 -0
  27. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_constants.py +0 -0
  28. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_exceptions.py +0 -0
  29. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_files.py +0 -0
  30. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_models.py +0 -0
  31. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_qs.py +0 -0
  32. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_resource.py +0 -0
  33. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_response.py +0 -0
  34. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_streaming.py +0 -0
  35. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_types.py +0 -0
  36. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_utils/__init__.py +0 -0
  37. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_utils/_compat.py +0 -0
  38. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_utils/_datetime_parse.py +0 -0
  39. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_utils/_json.py +0 -0
  40. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_utils/_logs.py +0 -0
  41. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_utils/_path.py +0 -0
  42. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_utils/_proxy.py +0 -0
  43. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_utils/_reflection.py +0 -0
  44. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_utils/_resources_proxy.py +0 -0
  45. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_utils/_streams.py +0 -0
  46. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_utils/_sync.py +0 -0
  47. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_utils/_transform.py +0 -0
  48. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_utils/_typing.py +0 -0
  49. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/_utils/_utils.py +0 -0
  50. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/lib/.keep +0 -0
  51. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/pagination.py +0 -0
  52. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/py.typed +0 -0
  53. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/resources/__init__.py +0 -0
  54. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/resources/capability.py +0 -0
  55. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/resources/chats/__init__.py +0 -0
  56. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/resources/chats/chats.py +0 -0
  57. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/resources/chats/messages.py +0 -0
  58. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/resources/chats/participants.py +0 -0
  59. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/resources/chats/typing.py +0 -0
  60. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/resources/contact_card.py +0 -0
  61. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/resources/messages.py +0 -0
  62. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/resources/phone_numbers.py +0 -0
  63. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/resources/phonenumbers.py +0 -0
  64. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/resources/webhook_events.py +0 -0
  65. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/resources/webhook_subscriptions.py +0 -0
  66. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/resources/webhooks.py +0 -0
  67. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/__init__.py +0 -0
  68. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/attachment_create_response.py +0 -0
  69. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/capability_check_RCS_params.py +0 -0
  70. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/capability_check_i_message_params.py +0 -0
  71. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chat.py +0 -0
  72. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chat_create_params.py +0 -0
  73. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chat_create_response.py +0 -0
  74. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chat_created_webhook_event.py +0 -0
  75. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chat_group_icon_update_failed_webhook_event.py +0 -0
  76. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chat_group_icon_updated_webhook_event.py +0 -0
  77. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chat_group_name_update_failed_webhook_event.py +0 -0
  78. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chat_group_name_updated_webhook_event.py +0 -0
  79. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chat_leave_chat_response.py +0 -0
  80. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chat_list_chats_params.py +0 -0
  81. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chat_send_voicememo_params.py +0 -0
  82. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chat_send_voicememo_response.py +0 -0
  83. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chat_typing_indicator_started_webhook_event.py +0 -0
  84. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chat_typing_indicator_stopped_webhook_event.py +0 -0
  85. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chat_update_params.py +0 -0
  86. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chat_update_response.py +0 -0
  87. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chats/__init__.py +0 -0
  88. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chats/message_list_params.py +0 -0
  89. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chats/message_send_params.py +0 -0
  90. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chats/message_send_response.py +0 -0
  91. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chats/participant_add_params.py +0 -0
  92. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chats/participant_add_response.py +0 -0
  93. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chats/participant_remove_params.py +0 -0
  94. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/chats/participant_remove_response.py +0 -0
  95. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/contact_card_create_params.py +0 -0
  96. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/contact_card_retrieve_params.py +0 -0
  97. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/contact_card_retrieve_response.py +0 -0
  98. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/contact_card_update_params.py +0 -0
  99. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/events_webhook_event.py +0 -0
  100. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/handle_check_response.py +0 -0
  101. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/link_part_param.py +0 -0
  102. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/media_part_param.py +0 -0
  103. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/message.py +0 -0
  104. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/message_add_reaction_params.py +0 -0
  105. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/message_add_reaction_response.py +0 -0
  106. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/message_content_param.py +0 -0
  107. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/message_delivered_webhook_event.py +0 -0
  108. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/message_edited_webhook_event.py +0 -0
  109. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/message_effect.py +0 -0
  110. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/message_effect_param.py +0 -0
  111. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/message_event_v2.py +0 -0
  112. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/message_failed_webhook_event.py +0 -0
  113. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/message_list_messages_thread_params.py +0 -0
  114. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/message_read_webhook_event.py +0 -0
  115. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/message_received_webhook_event.py +0 -0
  116. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/message_sent_webhook_event.py +0 -0
  117. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/message_update_params.py +0 -0
  118. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/participant_added_webhook_event.py +0 -0
  119. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/participant_removed_webhook_event.py +0 -0
  120. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/phone_number_list_response.py +0 -0
  121. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/phone_number_status_updated_webhook_event.py +0 -0
  122. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/phonenumber_list_response.py +0 -0
  123. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/reaction_added_webhook_event.py +0 -0
  124. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/reaction_event_base.py +0 -0
  125. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/reaction_removed_webhook_event.py +0 -0
  126. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/reply_to.py +0 -0
  127. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/reply_to_param.py +0 -0
  128. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/schemas_media_part_response.py +0 -0
  129. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/schemas_message_effect.py +0 -0
  130. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/schemas_text_part_response.py +0 -0
  131. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/set_contact_card.py +0 -0
  132. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/shared/__init__.py +0 -0
  133. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/shared/chat_handle.py +0 -0
  134. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/shared/link_part_response.py +0 -0
  135. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/shared/media_part_response.py +0 -0
  136. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/shared/reaction.py +0 -0
  137. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/shared/reaction_type.py +0 -0
  138. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/shared/service_type.py +0 -0
  139. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/shared/text_decoration.py +0 -0
  140. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/shared/text_part_response.py +0 -0
  141. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/shared_params/__init__.py +0 -0
  142. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/shared_params/reaction_type.py +0 -0
  143. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/shared_params/service_type.py +0 -0
  144. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/shared_params/text_decoration.py +0 -0
  145. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/supported_content_type.py +0 -0
  146. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/text_part_param.py +0 -0
  147. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/webhook_event_list_response.py +0 -0
  148. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/webhook_event_type.py +0 -0
  149. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/webhook_subscription.py +0 -0
  150. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/webhook_subscription_create_params.py +0 -0
  151. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/webhook_subscription_create_response.py +0 -0
  152. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/webhook_subscription_list_response.py +0 -0
  153. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq/types/webhook_subscription_update_params.py +0 -0
  154. {linq_python-0.2.1 → linq_python-0.2.3}/src/linq_api_v3/lib/.keep +0 -0
  155. {linq_python-0.2.1 → linq_python-0.2.3}/tests/__init__.py +0 -0
  156. {linq_python-0.2.1 → linq_python-0.2.3}/tests/api_resources/__init__.py +0 -0
  157. {linq_python-0.2.1 → linq_python-0.2.3}/tests/api_resources/chats/__init__.py +0 -0
  158. {linq_python-0.2.1 → linq_python-0.2.3}/tests/api_resources/chats/test_messages.py +0 -0
  159. {linq_python-0.2.1 → linq_python-0.2.3}/tests/api_resources/chats/test_participants.py +0 -0
  160. {linq_python-0.2.1 → linq_python-0.2.3}/tests/api_resources/chats/test_typing.py +0 -0
  161. {linq_python-0.2.1 → linq_python-0.2.3}/tests/api_resources/test_attachments.py +0 -0
  162. {linq_python-0.2.1 → linq_python-0.2.3}/tests/api_resources/test_capability.py +0 -0
  163. {linq_python-0.2.1 → linq_python-0.2.3}/tests/api_resources/test_chats.py +0 -0
  164. {linq_python-0.2.1 → linq_python-0.2.3}/tests/api_resources/test_contact_card.py +0 -0
  165. {linq_python-0.2.1 → linq_python-0.2.3}/tests/api_resources/test_messages.py +0 -0
  166. {linq_python-0.2.1 → linq_python-0.2.3}/tests/api_resources/test_phone_numbers.py +0 -0
  167. {linq_python-0.2.1 → linq_python-0.2.3}/tests/api_resources/test_phonenumbers.py +0 -0
  168. {linq_python-0.2.1 → linq_python-0.2.3}/tests/api_resources/test_webhook_events.py +0 -0
  169. {linq_python-0.2.1 → linq_python-0.2.3}/tests/api_resources/test_webhook_subscriptions.py +0 -0
  170. {linq_python-0.2.1 → linq_python-0.2.3}/tests/api_resources/test_webhooks.py +0 -0
  171. {linq_python-0.2.1 → linq_python-0.2.3}/tests/conftest.py +0 -0
  172. {linq_python-0.2.1 → linq_python-0.2.3}/tests/sample_file.txt +0 -0
  173. {linq_python-0.2.1 → linq_python-0.2.3}/tests/test_deepcopy.py +0 -0
  174. {linq_python-0.2.1 → linq_python-0.2.3}/tests/test_extract_files.py +0 -0
  175. {linq_python-0.2.1 → linq_python-0.2.3}/tests/test_files.py +0 -0
  176. {linq_python-0.2.1 → linq_python-0.2.3}/tests/test_models.py +0 -0
  177. {linq_python-0.2.1 → linq_python-0.2.3}/tests/test_qs.py +0 -0
  178. {linq_python-0.2.1 → linq_python-0.2.3}/tests/test_required_args.py +0 -0
  179. {linq_python-0.2.1 → linq_python-0.2.3}/tests/test_response.py +0 -0
  180. {linq_python-0.2.1 → linq_python-0.2.3}/tests/test_streaming.py +0 -0
  181. {linq_python-0.2.1 → linq_python-0.2.3}/tests/test_transform.py +0 -0
  182. {linq_python-0.2.1 → linq_python-0.2.3}/tests/test_utils/test_datetime_parse.py +0 -0
  183. {linq_python-0.2.1 → linq_python-0.2.3}/tests/test_utils/test_json.py +0 -0
  184. {linq_python-0.2.1 → linq_python-0.2.3}/tests/test_utils/test_path.py +0 -0
  185. {linq_python-0.2.1 → linq_python-0.2.3}/tests/test_utils/test_proxy.py +0 -0
  186. {linq_python-0.2.1 → linq_python-0.2.3}/tests/test_utils/test_typing.py +0 -0
  187. {linq_python-0.2.1 → linq_python-0.2.3}/tests/utils.py +0 -0
  188. {linq_python-0.2.1 → linq_python-0.2.3}/uv.lock +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.2.3"
3
+ }
@@ -1,5 +1,22 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.2.3 (2026-04-08)
4
+
5
+ Full Changelog: [v0.2.2...v0.2.3](https://github.com/linq-team/linq-python/compare/v0.2.2...v0.2.3)
6
+
7
+ ### Bug Fixes
8
+
9
+ * **api-service:** add created_at and make sent_at nullable in SentMessage ([fa68395](https://github.com/linq-team/linq-python/commit/fa683950b661507844f9d1f22c4716daf9805810))
10
+ * block SMS group participant changes and fix e2e test failures ([e05f1af](https://github.com/linq-team/linq-python/commit/e05f1af36a6d37d13952bdad56f16b903bfccc34))
11
+
12
+ ## 0.2.2 (2026-04-08)
13
+
14
+ Full Changelog: [v0.2.1...v0.2.2](https://github.com/linq-team/linq-python/compare/v0.2.1...v0.2.2)
15
+
16
+ ### Bug Fixes
17
+
18
+ * **client:** preserve hardcoded query params when merging with user params ([6c18c57](https://github.com/linq-team/linq-python/commit/6c18c57b5aa590fe7a096b98ef617f3be086d066))
19
+
3
20
  ## 0.2.1 (2026-04-07)
4
21
 
5
22
  Full Changelog: [v0.2.0...v0.2.1](https://github.com/linq-team/linq-python/compare/v0.2.0...v0.2.1)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: linq-python
3
- Version: 0.2.1
3
+ Version: 0.2.3
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.2.1"
3
+ version = "0.2.3"
4
4
  description = "The official Python library for the linq-api-v3 API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -558,6 +558,10 @@ class BaseClient(Generic[_HttpxClientT, _DefaultStreamT]):
558
558
  files = cast(HttpxRequestFiles, ForceMultipartDict())
559
559
 
560
560
  prepared_url = self._prepare_url(options.url)
561
+ # preserve hard-coded query params from the url
562
+ if params and prepared_url.query:
563
+ params = {**dict(prepared_url.params.items()), **params}
564
+ prepared_url = prepared_url.copy_with(raw_path=prepared_url.raw_path.split(b"?", 1)[0])
561
565
  if "_" in prepared_url.host:
562
566
  # work around https://github.com/encode/httpx/discussions/2880
563
567
  kwargs["extensions"] = {"sni_hostname": prepared_url.host.replace("_", "-")}
@@ -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.2.1" # x-release-please-version
4
+ __version__ = "0.2.3" # x-release-please-version
@@ -219,6 +219,10 @@ class AttachmentsResource(SyncAPIResource):
219
219
  application/x-iwork-keynote-sffkey, application/epub+zip, application/zip,
220
220
  application/x-gzip
221
221
 
222
+ **Transcoded on delivery:**
223
+
224
+ - `audio/x-caf` — CAF files are transcoded to `audio/mp4` for delivery.
225
+
222
226
  **Deprecated (accepted but transcoded):**
223
227
 
224
228
  - `audio/mp3` — Deprecated. Use `audio/mpeg` instead. Files sent as audio/mp3
@@ -490,6 +494,10 @@ class AsyncAttachmentsResource(AsyncAPIResource):
490
494
  application/x-iwork-keynote-sffkey, application/epub+zip, application/zip,
491
495
  application/x-gzip
492
496
 
497
+ **Transcoded on delivery:**
498
+
499
+ - `audio/x-caf` — CAF files are transcoded to `audio/mp4` for delivery.
500
+
493
501
  **Deprecated (accepted but transcoded):**
494
502
 
495
503
  - `audio/mp3` — Deprecated. Use `audio/mpeg` instead. Files sent as audio/mp3
@@ -34,6 +34,10 @@ class AttachmentCreateParams(TypedDict, total=False):
34
34
  application/x-iwork-keynote-sffkey, application/epub+zip, application/zip,
35
35
  application/x-gzip
36
36
 
37
+ **Transcoded on delivery:**
38
+
39
+ - `audio/x-caf` — CAF files are transcoded to `audio/mp4` for delivery.
40
+
37
41
  **Deprecated (accepted but transcoded):**
38
42
 
39
43
  - `audio/mp3` — Deprecated. Use `audio/mpeg` instead. Files sent as audio/mp3
@@ -38,6 +38,10 @@ class AttachmentRetrieveResponse(BaseModel):
38
38
  application/x-iwork-keynote-sffkey, application/epub+zip, application/zip,
39
39
  application/x-gzip
40
40
 
41
+ **Transcoded on delivery:**
42
+
43
+ - `audio/x-caf` — CAF files are transcoded to `audio/mp4` for delivery.
44
+
41
45
  **Deprecated (accepted but transcoded):**
42
46
 
43
47
  - `audio/mp3` — Deprecated. Use `audio/mpeg` instead. Files sent as audio/mp3
@@ -24,6 +24,9 @@ class SentMessage(BaseModel):
24
24
  id: str
25
25
  """Message identifier (UUID)"""
26
26
 
27
+ created_at: datetime
28
+ """When the message was created"""
29
+
27
30
  delivery_status: Literal["pending", "queued", "sent", "delivered", "failed"]
28
31
  """Current delivery status of a message"""
29
32
 
@@ -33,8 +36,8 @@ class SentMessage(BaseModel):
33
36
  parts: List[Part]
34
37
  """Message parts in order (text, media, and link)"""
35
38
 
36
- sent_at: datetime
37
- """When the message was sent"""
39
+ sent_at: Optional[datetime] = None
40
+ """When the message was actually sent (null if still queued)"""
38
41
 
39
42
  delivered_at: Optional[datetime] = None
40
43
  """When the message was delivered"""
@@ -429,6 +429,30 @@ class TestLinqApiv3:
429
429
 
430
430
  client.close()
431
431
 
432
+ def test_hardcoded_query_params_in_url(self, client: LinqAPIV3) -> None:
433
+ request = client._build_request(FinalRequestOptions(method="get", url="/foo?beta=true"))
434
+ url = httpx.URL(request.url)
435
+ assert dict(url.params) == {"beta": "true"}
436
+
437
+ request = client._build_request(
438
+ FinalRequestOptions(
439
+ method="get",
440
+ url="/foo?beta=true",
441
+ params={"limit": "10", "page": "abc"},
442
+ )
443
+ )
444
+ url = httpx.URL(request.url)
445
+ assert dict(url.params) == {"beta": "true", "limit": "10", "page": "abc"}
446
+
447
+ request = client._build_request(
448
+ FinalRequestOptions(
449
+ method="get",
450
+ url="/files/a%2Fb?beta=true",
451
+ params={"limit": "10"},
452
+ )
453
+ )
454
+ assert request.url.raw_path == b"/files/a%2Fb?beta=true&limit=10"
455
+
432
456
  def test_request_extra_json(self, client: LinqAPIV3) -> None:
433
457
  request = client._build_request(
434
458
  FinalRequestOptions(
@@ -1377,6 +1401,30 @@ class TestAsyncLinqApiv3:
1377
1401
 
1378
1402
  await client.close()
1379
1403
 
1404
+ async def test_hardcoded_query_params_in_url(self, async_client: AsyncLinqAPIV3) -> None:
1405
+ request = async_client._build_request(FinalRequestOptions(method="get", url="/foo?beta=true"))
1406
+ url = httpx.URL(request.url)
1407
+ assert dict(url.params) == {"beta": "true"}
1408
+
1409
+ request = async_client._build_request(
1410
+ FinalRequestOptions(
1411
+ method="get",
1412
+ url="/foo?beta=true",
1413
+ params={"limit": "10", "page": "abc"},
1414
+ )
1415
+ )
1416
+ url = httpx.URL(request.url)
1417
+ assert dict(url.params) == {"beta": "true", "limit": "10", "page": "abc"}
1418
+
1419
+ request = async_client._build_request(
1420
+ FinalRequestOptions(
1421
+ method="get",
1422
+ url="/files/a%2Fb?beta=true",
1423
+ params={"limit": "10"},
1424
+ )
1425
+ )
1426
+ assert request.url.raw_path == b"/files/a%2Fb?beta=true&limit=10"
1427
+
1380
1428
  def test_request_extra_json(self, client: LinqAPIV3) -> None:
1381
1429
  request = client._build_request(
1382
1430
  FinalRequestOptions(
@@ -1,3 +0,0 @@
1
- {
2
- ".": "0.2.1"
3
- }
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes