linq-python 0.20.0__tar.gz → 0.21.1__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 (243) hide show
  1. linq_python-0.21.1/.release-please-manifest.json +3 -0
  2. {linq_python-0.20.0 → linq_python-0.21.1}/CHANGELOG.md +29 -0
  3. {linq_python-0.20.0 → linq_python-0.21.1}/PKG-INFO +1 -1
  4. {linq_python-0.20.0 → linq_python-0.21.1}/api.md +14 -0
  5. {linq_python-0.20.0 → linq_python-0.21.1}/pyproject.toml +1 -1
  6. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_client.py +86 -0
  7. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_version.py +1 -1
  8. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/__init__.py +14 -0
  9. linq_python-0.21.1/src/linq/resources/blocked_handles.py +368 -0
  10. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/messages/messages.py +22 -0
  11. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/__init__.py +5 -0
  12. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/attachment_create_response.py +3 -1
  13. linq_python-0.21.1/src/linq/types/blocked_handle_block_params.py +18 -0
  14. linq_python-0.21.1/src/linq/types/blocked_handle_block_response.py +10 -0
  15. linq_python-0.21.1/src/linq/types/blocked_handle_entry.py +22 -0
  16. linq_python-0.21.1/src/linq/types/blocked_handle_list_response.py +13 -0
  17. linq_python-0.21.1/src/linq/types/blocked_handle_unblock_params.py +12 -0
  18. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chat.py +8 -8
  19. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chat_create_response.py +8 -8
  20. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chat_created_webhook_event.py +8 -8
  21. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chat_group_icon_update_failed_webhook_event.py +7 -1
  22. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chat_group_name_update_failed_webhook_event.py +7 -1
  23. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/message_edited_webhook_event.py +8 -8
  24. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/message_event_v2.py +8 -8
  25. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/message_failed_webhook_event.py +25 -1
  26. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/message_update_app_card_params.py +43 -2
  27. linq_python-0.21.1/tests/api_resources/test_blocked_handles.py +237 -0
  28. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/test_messages.py +10 -0
  29. {linq_python-0.20.0 → linq_python-0.21.1}/uv.lock +1 -1
  30. linq_python-0.20.0/.release-please-manifest.json +0 -3
  31. {linq_python-0.20.0 → linq_python-0.21.1}/.gitignore +0 -0
  32. {linq_python-0.20.0 → linq_python-0.21.1}/CONTRIBUTING.md +0 -0
  33. {linq_python-0.20.0 → linq_python-0.21.1}/LICENSE +0 -0
  34. {linq_python-0.20.0 → linq_python-0.21.1}/README.md +0 -0
  35. {linq_python-0.20.0 → linq_python-0.21.1}/SECURITY.md +0 -0
  36. {linq_python-0.20.0 → linq_python-0.21.1}/bin/check-release-environment +0 -0
  37. {linq_python-0.20.0 → linq_python-0.21.1}/bin/publish-pypi +0 -0
  38. {linq_python-0.20.0 → linq_python-0.21.1}/examples/.keep +0 -0
  39. {linq_python-0.20.0 → linq_python-0.21.1}/release-please-config.json +0 -0
  40. {linq_python-0.20.0 → linq_python-0.21.1}/requirements-dev.lock +0 -0
  41. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/__init__.py +0 -0
  42. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_base_client.py +0 -0
  43. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_compat.py +0 -0
  44. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_constants.py +0 -0
  45. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_exceptions.py +0 -0
  46. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_files.py +0 -0
  47. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_models.py +0 -0
  48. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_qs.py +0 -0
  49. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_resource.py +0 -0
  50. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_response.py +0 -0
  51. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_streaming.py +0 -0
  52. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_types.py +0 -0
  53. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_utils/__init__.py +0 -0
  54. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_utils/_compat.py +0 -0
  55. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_utils/_datetime_parse.py +0 -0
  56. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_utils/_json.py +0 -0
  57. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_utils/_logs.py +0 -0
  58. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_utils/_path.py +0 -0
  59. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_utils/_proxy.py +0 -0
  60. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_utils/_reflection.py +0 -0
  61. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_utils/_resources_proxy.py +0 -0
  62. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_utils/_streams.py +0 -0
  63. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_utils/_sync.py +0 -0
  64. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_utils/_transform.py +0 -0
  65. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_utils/_typing.py +0 -0
  66. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/_utils/_utils.py +0 -0
  67. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/lib/.keep +0 -0
  68. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/pagination.py +0 -0
  69. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/py.typed +0 -0
  70. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/attachments.py +0 -0
  71. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/available_number.py +0 -0
  72. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/capability.py +0 -0
  73. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/chats/__init__.py +0 -0
  74. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/chats/chats.py +0 -0
  75. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/chats/location.py +0 -0
  76. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/chats/messages.py +0 -0
  77. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/chats/participants.py +0 -0
  78. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/chats/polls.py +0 -0
  79. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/chats/typing.py +0 -0
  80. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/contact_card.py +0 -0
  81. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/experiences.py +0 -0
  82. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/messages/__init__.py +0 -0
  83. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/messages/poll.py +0 -0
  84. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/payment_handles.py +0 -0
  85. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/payment_providers.py +0 -0
  86. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/payment_requests.py +0 -0
  87. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/payments.py +0 -0
  88. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/phone_numbers.py +0 -0
  89. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/phonenumbers.py +0 -0
  90. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/webhook_events.py +0 -0
  91. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/webhook_subscriptions.py +0 -0
  92. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/resources/webhooks.py +0 -0
  93. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/attachment_create_params.py +0 -0
  94. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/attachment_retrieve_response.py +0 -0
  95. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/available_number_retrieve_params.py +0 -0
  96. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/available_number_retrieve_response.py +0 -0
  97. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/capability_check_RCS_params.py +0 -0
  98. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/capability_check_i_message_params.py +0 -0
  99. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chat_create_params.py +0 -0
  100. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chat_group_icon_updated_webhook_event.py +0 -0
  101. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chat_group_name_updated_webhook_event.py +0 -0
  102. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chat_leave_chat_response.py +0 -0
  103. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chat_list_chats_params.py +0 -0
  104. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chat_send_voicememo_params.py +0 -0
  105. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chat_send_voicememo_response.py +0 -0
  106. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chat_typing_indicator_started_webhook_event.py +0 -0
  107. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chat_typing_indicator_stopped_webhook_event.py +0 -0
  108. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chat_update_params.py +0 -0
  109. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chat_update_response.py +0 -0
  110. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chats/__init__.py +0 -0
  111. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chats/get_chat_location_response.py +0 -0
  112. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chats/location_request_response.py +0 -0
  113. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chats/message_list_params.py +0 -0
  114. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chats/message_send_params.py +0 -0
  115. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chats/message_send_response.py +0 -0
  116. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chats/participant_add_params.py +0 -0
  117. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chats/participant_add_response.py +0 -0
  118. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chats/participant_remove_params.py +0 -0
  119. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chats/participant_remove_response.py +0 -0
  120. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chats/poll.py +0 -0
  121. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chats/poll_create_params.py +0 -0
  122. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chats/poll_envelope.py +0 -0
  123. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/chats/sent_message.py +0 -0
  124. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/contact_card_create_params.py +0 -0
  125. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/contact_card_retrieve_params.py +0 -0
  126. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/contact_card_retrieve_response.py +0 -0
  127. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/contact_card_update_params.py +0 -0
  128. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/experience_list_response.py +0 -0
  129. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/experience_retrieve_response.py +0 -0
  130. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/handle_check_response.py +0 -0
  131. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/link_part_param.py +0 -0
  132. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/media_part_param.py +0 -0
  133. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/message.py +0 -0
  134. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/message_add_reaction_params.py +0 -0
  135. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/message_add_reaction_response.py +0 -0
  136. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/message_content_param.py +0 -0
  137. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/message_create_params.py +0 -0
  138. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/message_create_response.py +0 -0
  139. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/message_delivered_webhook_event.py +0 -0
  140. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/message_effect.py +0 -0
  141. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/message_effect_param.py +0 -0
  142. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/message_list_messages_thread_params.py +0 -0
  143. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/message_read_webhook_event.py +0 -0
  144. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/message_received_webhook_event.py +0 -0
  145. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/message_sent_webhook_event.py +0 -0
  146. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/message_update_app_card_response.py +0 -0
  147. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/message_update_params.py +0 -0
  148. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/messages/__init__.py +0 -0
  149. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/messages/poll_add_options_params.py +0 -0
  150. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/messages/poll_vote_params.py +0 -0
  151. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/participant_added_webhook_event.py +0 -0
  152. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/participant_removed_webhook_event.py +0 -0
  153. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/payment.py +0 -0
  154. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/payment_create_params.py +0 -0
  155. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/payment_credentials_response.py +0 -0
  156. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/payment_handle_connection.py +0 -0
  157. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/payment_handle_verify_params.py +0 -0
  158. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/payment_provider.py +0 -0
  159. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/payment_provider_connect_params.py +0 -0
  160. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/payment_provider_connect_response.py +0 -0
  161. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/payment_request.py +0 -0
  162. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/payment_request_create_params.py +0 -0
  163. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/payment_request_list_params.py +0 -0
  164. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/payment_request_list_response.py +0 -0
  165. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/phone_number_list_response.py +0 -0
  166. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/phone_number_status_updated_webhook_event.py +0 -0
  167. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/phone_number_update_params.py +0 -0
  168. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/phone_number_update_response.py +0 -0
  169. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/phonenumber_list_response.py +0 -0
  170. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/reaction_added_webhook_event.py +0 -0
  171. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/reaction_event_base.py +0 -0
  172. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/reaction_removed_webhook_event.py +0 -0
  173. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/reply_to.py +0 -0
  174. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/reply_to_param.py +0 -0
  175. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/schemas_media_part_response.py +0 -0
  176. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/schemas_message_effect.py +0 -0
  177. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/schemas_text_part_response.py +0 -0
  178. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/set_contact_card.py +0 -0
  179. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/shared/__init__.py +0 -0
  180. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/shared/chat_handle.py +0 -0
  181. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/shared/link_part_response.py +0 -0
  182. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/shared/media_part_response.py +0 -0
  183. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/shared/reaction.py +0 -0
  184. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/shared/reaction_type.py +0 -0
  185. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/shared/service_type.py +0 -0
  186. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/shared/text_decoration.py +0 -0
  187. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/shared/text_part_response.py +0 -0
  188. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/shared_params/__init__.py +0 -0
  189. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/shared_params/reaction_type.py +0 -0
  190. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/shared_params/service_type.py +0 -0
  191. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/shared_params/text_decoration.py +0 -0
  192. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/supported_content_type.py +0 -0
  193. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/text_part_param.py +0 -0
  194. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/unwrap_webhook_event.py +0 -0
  195. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/webhook_event_list_response.py +0 -0
  196. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/webhook_event_type.py +0 -0
  197. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/webhook_subscription.py +0 -0
  198. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/webhook_subscription_create_params.py +0 -0
  199. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/webhook_subscription_create_response.py +0 -0
  200. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/webhook_subscription_list_response.py +0 -0
  201. {linq_python-0.20.0 → linq_python-0.21.1}/src/linq/types/webhook_subscription_update_params.py +0 -0
  202. {linq_python-0.20.0 → linq_python-0.21.1}/tests/__init__.py +0 -0
  203. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/__init__.py +0 -0
  204. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/chats/__init__.py +0 -0
  205. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/chats/test_location.py +0 -0
  206. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/chats/test_messages.py +0 -0
  207. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/chats/test_participants.py +0 -0
  208. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/chats/test_polls.py +0 -0
  209. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/chats/test_typing.py +0 -0
  210. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/messages/__init__.py +0 -0
  211. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/messages/test_poll.py +0 -0
  212. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/test_attachments.py +0 -0
  213. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/test_available_number.py +0 -0
  214. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/test_capability.py +0 -0
  215. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/test_chats.py +0 -0
  216. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/test_contact_card.py +0 -0
  217. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/test_experiences.py +0 -0
  218. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/test_payment_handles.py +0 -0
  219. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/test_payment_providers.py +0 -0
  220. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/test_payment_requests.py +0 -0
  221. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/test_payments.py +0 -0
  222. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/test_phone_numbers.py +0 -0
  223. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/test_phonenumbers.py +0 -0
  224. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/test_webhook_events.py +0 -0
  225. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/test_webhook_subscriptions.py +0 -0
  226. {linq_python-0.20.0 → linq_python-0.21.1}/tests/api_resources/test_webhooks.py +0 -0
  227. {linq_python-0.20.0 → linq_python-0.21.1}/tests/conftest.py +0 -0
  228. {linq_python-0.20.0 → linq_python-0.21.1}/tests/sample_file.txt +0 -0
  229. {linq_python-0.20.0 → linq_python-0.21.1}/tests/test_client.py +0 -0
  230. {linq_python-0.20.0 → linq_python-0.21.1}/tests/test_extract_files.py +0 -0
  231. {linq_python-0.20.0 → linq_python-0.21.1}/tests/test_files.py +0 -0
  232. {linq_python-0.20.0 → linq_python-0.21.1}/tests/test_models.py +0 -0
  233. {linq_python-0.20.0 → linq_python-0.21.1}/tests/test_qs.py +0 -0
  234. {linq_python-0.20.0 → linq_python-0.21.1}/tests/test_required_args.py +0 -0
  235. {linq_python-0.20.0 → linq_python-0.21.1}/tests/test_response.py +0 -0
  236. {linq_python-0.20.0 → linq_python-0.21.1}/tests/test_streaming.py +0 -0
  237. {linq_python-0.20.0 → linq_python-0.21.1}/tests/test_transform.py +0 -0
  238. {linq_python-0.20.0 → linq_python-0.21.1}/tests/test_utils/test_datetime_parse.py +0 -0
  239. {linq_python-0.20.0 → linq_python-0.21.1}/tests/test_utils/test_json.py +0 -0
  240. {linq_python-0.20.0 → linq_python-0.21.1}/tests/test_utils/test_path.py +0 -0
  241. {linq_python-0.20.0 → linq_python-0.21.1}/tests/test_utils/test_proxy.py +0 -0
  242. {linq_python-0.20.0 → linq_python-0.21.1}/tests/test_utils/test_typing.py +0 -0
  243. {linq_python-0.20.0 → linq_python-0.21.1}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.21.1"
3
+ }
@@ -1,5 +1,34 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.21.1](https://github.com/linq-team/linq-python/compare/v0.21.0...v0.21.1) (2026-08-10)
4
+
5
+
6
+ ### Chores
7
+
8
+ * regenerate SDKs from updated generator config ([4ca0628](https://github.com/linq-team/linq-python/commit/4ca062885d16ce39ec1bd2ba15587d39826d903a))
9
+
10
+ ## [0.21.0](https://github.com/linq-team/linq-python/compare/v0.20.0...v0.21.0) (2026-08-10)
11
+
12
+
13
+ ### Features
14
+
15
+ * add blocked handles api for managing inbound message filtering ([b8f2f87](https://github.com/linq-team/linq-python/commit/b8f2f87a8cd442f876fd05a49b79f37f9d8b3cb2))
16
+ * add diagnostic fields to message failure webhook events ([b8f2f87](https://github.com/linq-team/linq-python/commit/b8f2f87a8cd442f876fd05a49b79f37f9d8b3cb2))
17
+ * regenerate SDKs from updated API spec ([b8f2f87](https://github.com/linq-team/linq-python/commit/b8f2f87a8cd442f876fd05a49b79f37f9d8b3cb2))
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * clarify opted-out status clearing behavior in chat health ([b8f2f87](https://github.com/linq-team/linq-python/commit/b8f2f87a8cd442f876fd05a49b79f37f9d8b3cb2))
23
+ * clarify stop keyword behavior and matching rules ([b8f2f87](https://github.com/linq-team/linq-python/commit/b8f2f87a8cd442f876fd05a49b79f37f9d8b3cb2))
24
+ * clarify stop keyword behavior for multi-chat replies ([b8f2f87](https://github.com/linq-team/linq-python/commit/b8f2f87a8cd442f876fd05a49b79f37f9d8b3cb2))
25
+ * expand webhook error code documentation for failure events ([b8f2f87](https://github.com/linq-team/linq-python/commit/b8f2f87a8cd442f876fd05a49b79f37f9d8b3cb2))
26
+
27
+
28
+ ### Documentation
29
+
30
+ * clarify presigned url behavior and configuration ([b8f2f87](https://github.com/linq-team/linq-python/commit/b8f2f87a8cd442f876fd05a49b79f37f9d8b3cb2))
31
+
3
32
  ## [0.20.0](https://github.com/linq-team/linq-python/compare/v0.19.1...v0.20.0) (2026-08-05)
4
33
 
5
34
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: linq-python
3
- Version: 0.20.0
3
+ Version: 0.21.1
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
@@ -242,6 +242,20 @@ Methods:
242
242
  - <code title="post /v3/payments/{paymentId}/cancel">client.payments.<a href="./src/linq/resources/payments.py">cancel</a>(payment_id) -> <a href="./src/linq/types/payment.py">Payment</a></code>
243
243
  - <code title="get /v3/payments/{paymentId}/credentials">client.payments.<a href="./src/linq/resources/payments.py">credentials</a>(payment_id) -> <a href="./src/linq/types/payment_credentials_response.py">PaymentCredentialsResponse</a></code>
244
244
 
245
+ # BlockedHandles
246
+
247
+ Types:
248
+
249
+ ```python
250
+ from linq.types import BlockedHandleEntry, BlockedHandleListResponse, BlockedHandleBlockResponse
251
+ ```
252
+
253
+ Methods:
254
+
255
+ - <code title="get /v3/blocked_handles">client.blocked_handles.<a href="./src/linq/resources/blocked_handles.py">list</a>() -> <a href="./src/linq/types/blocked_handle_list_response.py">BlockedHandleListResponse</a></code>
256
+ - <code title="post /v3/blocked_handles">client.blocked_handles.<a href="./src/linq/resources/blocked_handles.py">block</a>(\*\*<a href="src/linq/types/blocked_handle_block_params.py">params</a>) -> <a href="./src/linq/types/blocked_handle_block_response.py">BlockedHandleBlockResponse</a></code>
257
+ - <code title="delete /v3/blocked_handles">client.blocked_handles.<a href="./src/linq/resources/blocked_handles.py">unblock</a>(\*\*<a href="src/linq/types/blocked_handle_unblock_params.py">params</a>) -> None</code>
258
+
245
259
  # Experiences
246
260
 
247
261
  Types:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "linq-python"
3
- version = "0.20.0"
3
+ version = "0.21.1"
4
4
  description = "The official Python library for the linq-api-v3 API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -48,6 +48,7 @@ if TYPE_CHECKING:
48
48
  phonenumbers,
49
49
  phone_numbers,
50
50
  webhook_events,
51
+ blocked_handles,
51
52
  payment_handles,
52
53
  available_number,
53
54
  payment_requests,
@@ -64,6 +65,7 @@ if TYPE_CHECKING:
64
65
  from .resources.phonenumbers import PhonenumbersResource, AsyncPhonenumbersResource
65
66
  from .resources.phone_numbers import PhoneNumbersResource, AsyncPhoneNumbersResource
66
67
  from .resources.webhook_events import WebhookEventsResource, AsyncWebhookEventsResource
68
+ from .resources.blocked_handles import BlockedHandlesResource, AsyncBlockedHandlesResource
67
69
  from .resources.payment_handles import PaymentHandlesResource, AsyncPaymentHandlesResource
68
70
  from .resources.available_number import AvailableNumberResource, AsyncAvailableNumberResource
69
71
  from .resources.payment_requests import PaymentRequestsResource, AsyncPaymentRequestsResource
@@ -607,6 +609,20 @@ class LinqAPIV3(SyncAPIClient):
607
609
 
608
610
  return PaymentsResource(self)
609
611
 
612
+ @cached_property
613
+ def blocked_handles(self) -> BlockedHandlesResource:
614
+ """Block handles — phone numbers, email addresses, SMS short codes, or
615
+ sender IDs.
616
+
617
+ Inbound messages from a blocked handle are dropped before
618
+ they reach your webhooks, and direct sends to a blocked handle are
619
+ rejected with `403` (error code `2026`). Group sends that include
620
+ unblocked members are not restricted.
621
+ """
622
+ from .resources.blocked_handles import BlockedHandlesResource
623
+
624
+ return BlockedHandlesResource(self)
625
+
610
626
  @cached_property
611
627
  def experiences(self) -> ExperiencesResource:
612
628
  """
@@ -1561,6 +1577,20 @@ class AsyncLinqAPIV3(AsyncAPIClient):
1561
1577
 
1562
1578
  return AsyncPaymentsResource(self)
1563
1579
 
1580
+ @cached_property
1581
+ def blocked_handles(self) -> AsyncBlockedHandlesResource:
1582
+ """Block handles — phone numbers, email addresses, SMS short codes, or
1583
+ sender IDs.
1584
+
1585
+ Inbound messages from a blocked handle are dropped before
1586
+ they reach your webhooks, and direct sends to a blocked handle are
1587
+ rejected with `403` (error code `2026`). Group sends that include
1588
+ unblocked members are not restricted.
1589
+ """
1590
+ from .resources.blocked_handles import AsyncBlockedHandlesResource
1591
+
1592
+ return AsyncBlockedHandlesResource(self)
1593
+
1564
1594
  @cached_property
1565
1595
  def experiences(self) -> AsyncExperiencesResource:
1566
1596
  """
@@ -2449,6 +2479,20 @@ class LinqAPIV3WithRawResponse:
2449
2479
 
2450
2480
  return PaymentsResourceWithRawResponse(self._client.payments)
2451
2481
 
2482
+ @cached_property
2483
+ def blocked_handles(self) -> blocked_handles.BlockedHandlesResourceWithRawResponse:
2484
+ """Block handles — phone numbers, email addresses, SMS short codes, or
2485
+ sender IDs.
2486
+
2487
+ Inbound messages from a blocked handle are dropped before
2488
+ they reach your webhooks, and direct sends to a blocked handle are
2489
+ rejected with `403` (error code `2026`). Group sends that include
2490
+ unblocked members are not restricted.
2491
+ """
2492
+ from .resources.blocked_handles import BlockedHandlesResourceWithRawResponse
2493
+
2494
+ return BlockedHandlesResourceWithRawResponse(self._client.blocked_handles)
2495
+
2452
2496
  @cached_property
2453
2497
  def experiences(self) -> experiences.ExperiencesResourceWithRawResponse:
2454
2498
  """
@@ -3209,6 +3253,20 @@ class AsyncLinqAPIV3WithRawResponse:
3209
3253
 
3210
3254
  return AsyncPaymentsResourceWithRawResponse(self._client.payments)
3211
3255
 
3256
+ @cached_property
3257
+ def blocked_handles(self) -> blocked_handles.AsyncBlockedHandlesResourceWithRawResponse:
3258
+ """Block handles — phone numbers, email addresses, SMS short codes, or
3259
+ sender IDs.
3260
+
3261
+ Inbound messages from a blocked handle are dropped before
3262
+ they reach your webhooks, and direct sends to a blocked handle are
3263
+ rejected with `403` (error code `2026`). Group sends that include
3264
+ unblocked members are not restricted.
3265
+ """
3266
+ from .resources.blocked_handles import AsyncBlockedHandlesResourceWithRawResponse
3267
+
3268
+ return AsyncBlockedHandlesResourceWithRawResponse(self._client.blocked_handles)
3269
+
3212
3270
  @cached_property
3213
3271
  def experiences(self) -> experiences.AsyncExperiencesResourceWithRawResponse:
3214
3272
  """
@@ -3969,6 +4027,20 @@ class LinqAPIV3WithStreamedResponse:
3969
4027
 
3970
4028
  return PaymentsResourceWithStreamingResponse(self._client.payments)
3971
4029
 
4030
+ @cached_property
4031
+ def blocked_handles(self) -> blocked_handles.BlockedHandlesResourceWithStreamingResponse:
4032
+ """Block handles — phone numbers, email addresses, SMS short codes, or
4033
+ sender IDs.
4034
+
4035
+ Inbound messages from a blocked handle are dropped before
4036
+ they reach your webhooks, and direct sends to a blocked handle are
4037
+ rejected with `403` (error code `2026`). Group sends that include
4038
+ unblocked members are not restricted.
4039
+ """
4040
+ from .resources.blocked_handles import BlockedHandlesResourceWithStreamingResponse
4041
+
4042
+ return BlockedHandlesResourceWithStreamingResponse(self._client.blocked_handles)
4043
+
3972
4044
  @cached_property
3973
4045
  def experiences(self) -> experiences.ExperiencesResourceWithStreamingResponse:
3974
4046
  """
@@ -4729,6 +4801,20 @@ class AsyncLinqAPIV3WithStreamedResponse:
4729
4801
 
4730
4802
  return AsyncPaymentsResourceWithStreamingResponse(self._client.payments)
4731
4803
 
4804
+ @cached_property
4805
+ def blocked_handles(self) -> blocked_handles.AsyncBlockedHandlesResourceWithStreamingResponse:
4806
+ """Block handles — phone numbers, email addresses, SMS short codes, or
4807
+ sender IDs.
4808
+
4809
+ Inbound messages from a blocked handle are dropped before
4810
+ they reach your webhooks, and direct sends to a blocked handle are
4811
+ rejected with `403` (error code `2026`). Group sends that include
4812
+ unblocked members are not restricted.
4813
+ """
4814
+ from .resources.blocked_handles import AsyncBlockedHandlesResourceWithStreamingResponse
4815
+
4816
+ return AsyncBlockedHandlesResourceWithStreamingResponse(self._client.blocked_handles)
4817
+
4732
4818
  @cached_property
4733
4819
  def experiences(self) -> experiences.AsyncExperiencesResourceWithStreamingResponse:
4734
4820
  """
@@ -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.20.0" # x-release-please-version
4
+ __version__ = "0.21.1" # x-release-please-version
@@ -81,6 +81,14 @@ from .webhook_events import (
81
81
  WebhookEventsResourceWithStreamingResponse,
82
82
  AsyncWebhookEventsResourceWithStreamingResponse,
83
83
  )
84
+ from .blocked_handles import (
85
+ BlockedHandlesResource,
86
+ AsyncBlockedHandlesResource,
87
+ BlockedHandlesResourceWithRawResponse,
88
+ AsyncBlockedHandlesResourceWithRawResponse,
89
+ BlockedHandlesResourceWithStreamingResponse,
90
+ AsyncBlockedHandlesResourceWithStreamingResponse,
91
+ )
84
92
  from .payment_handles import (
85
93
  PaymentHandlesResource,
86
94
  AsyncPaymentHandlesResource,
@@ -183,6 +191,12 @@ __all__ = [
183
191
  "AsyncPaymentsResourceWithRawResponse",
184
192
  "PaymentsResourceWithStreamingResponse",
185
193
  "AsyncPaymentsResourceWithStreamingResponse",
194
+ "BlockedHandlesResource",
195
+ "AsyncBlockedHandlesResource",
196
+ "BlockedHandlesResourceWithRawResponse",
197
+ "AsyncBlockedHandlesResourceWithRawResponse",
198
+ "BlockedHandlesResourceWithStreamingResponse",
199
+ "AsyncBlockedHandlesResourceWithStreamingResponse",
186
200
  "ExperiencesResource",
187
201
  "AsyncExperiencesResource",
188
202
  "ExperiencesResourceWithRawResponse",
@@ -0,0 +1,368 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from __future__ import annotations
4
+
5
+ import httpx
6
+
7
+ from ..types import blocked_handle_block_params, blocked_handle_unblock_params
8
+ from .._types import Body, Omit, Query, Headers, NoneType, NotGiven, omit, not_given
9
+ from .._utils import maybe_transform, async_maybe_transform
10
+ from .._compat import cached_property
11
+ from .._resource import SyncAPIResource, AsyncAPIResource
12
+ from .._response import (
13
+ to_raw_response_wrapper,
14
+ to_streamed_response_wrapper,
15
+ async_to_raw_response_wrapper,
16
+ async_to_streamed_response_wrapper,
17
+ )
18
+ from .._base_client import make_request_options
19
+ from ..types.blocked_handle_list_response import BlockedHandleListResponse
20
+ from ..types.blocked_handle_block_response import BlockedHandleBlockResponse
21
+
22
+ __all__ = ["BlockedHandlesResource", "AsyncBlockedHandlesResource"]
23
+
24
+
25
+ class BlockedHandlesResource(SyncAPIResource):
26
+ """Block handles — phone numbers, email addresses, SMS short codes, or
27
+ sender IDs.
28
+
29
+ Inbound messages from a blocked handle are dropped before
30
+ they reach your webhooks, and direct sends to a blocked handle are
31
+ rejected with `403` (error code `2026`). Group sends that include
32
+ unblocked members are not restricted.
33
+ """
34
+
35
+ @cached_property
36
+ def with_raw_response(self) -> BlockedHandlesResourceWithRawResponse:
37
+ """
38
+ This property can be used as a prefix for any HTTP method call to return
39
+ the raw response object instead of the parsed content.
40
+
41
+ For more information, see https://www.github.com/linq-team/linq-python#accessing-raw-response-data-eg-headers
42
+ """
43
+ return BlockedHandlesResourceWithRawResponse(self)
44
+
45
+ @cached_property
46
+ def with_streaming_response(self) -> BlockedHandlesResourceWithStreamingResponse:
47
+ """
48
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
49
+
50
+ For more information, see https://www.github.com/linq-team/linq-python#with_streaming_response
51
+ """
52
+ return BlockedHandlesResourceWithStreamingResponse(self)
53
+
54
+ def list(
55
+ self,
56
+ *,
57
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
58
+ # The extra values given here take precedence over values defined on the client or passed to this method.
59
+ extra_headers: Headers | None = None,
60
+ extra_query: Query | None = None,
61
+ extra_body: Body | None = None,
62
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
63
+ ) -> BlockedHandleListResponse:
64
+ """Returns all handles you have blocked.
65
+
66
+ Inbound messages from a blocked handle are
67
+ dropped and produce no webhooks, and direct sends to a blocked handle are
68
+ rejected with `403` (error code `2026`). Group sends that include unblocked
69
+ members are not restricted.
70
+ """
71
+ return self._get(
72
+ "/v3/blocked_handles",
73
+ options=make_request_options(
74
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
75
+ ),
76
+ cast_to=BlockedHandleListResponse,
77
+ )
78
+
79
+ def block(
80
+ self,
81
+ *,
82
+ handle: str,
83
+ reason: str | Omit = omit,
84
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
85
+ # The extra values given here take precedence over values defined on the client or passed to this method.
86
+ extra_headers: Headers | None = None,
87
+ extra_query: Query | None = None,
88
+ extra_body: Body | None = None,
89
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
90
+ ) -> BlockedHandleBlockResponse:
91
+ """
92
+ Blocks a handle — an E.164 phone number, an email address (iMessage sender), an
93
+ SMS short code (e.g. `262966`), or an alphanumeric sender ID. Inbound messages
94
+ from it are dropped and produce no webhooks, and direct sends to it are rejected
95
+ with `403` (error code `2026`); group sends that include unblocked members are
96
+ not restricted. Blocking is idempotent — re-blocking an already blocked handle
97
+ returns the existing entry.
98
+
99
+ Args:
100
+ handle: The handle to block: an E.164 phone number, an email address, an SMS short code
101
+ (3-8 digits), or an alphanumeric sender ID.
102
+
103
+ reason: Optional free-text note on why the handle was blocked
104
+
105
+ extra_headers: Send extra headers
106
+
107
+ extra_query: Add additional query parameters to the request
108
+
109
+ extra_body: Add additional JSON properties to the request
110
+
111
+ timeout: Override the client-level default timeout for this request, in seconds
112
+ """
113
+ return self._post(
114
+ "/v3/blocked_handles",
115
+ body=maybe_transform(
116
+ {
117
+ "handle": handle,
118
+ "reason": reason,
119
+ },
120
+ blocked_handle_block_params.BlockedHandleBlockParams,
121
+ ),
122
+ options=make_request_options(
123
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
124
+ ),
125
+ cast_to=BlockedHandleBlockResponse,
126
+ )
127
+
128
+ def unblock(
129
+ self,
130
+ *,
131
+ handle: str,
132
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
133
+ # The extra values given here take precedence over values defined on the client or passed to this method.
134
+ extra_headers: Headers | None = None,
135
+ extra_query: Query | None = None,
136
+ extra_body: Body | None = None,
137
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
138
+ ) -> None:
139
+ """Removes a handle from your blocklist.
140
+
141
+ Inbound messages from it will be delivered
142
+ again and sends to it are allowed again. The handle goes in the request body,
143
+ mirroring block — no URL encoding needed.
144
+
145
+ Args:
146
+ handle: The handle to unblock
147
+
148
+ extra_headers: Send extra headers
149
+
150
+ extra_query: Add additional query parameters to the request
151
+
152
+ extra_body: Add additional JSON properties to the request
153
+
154
+ timeout: Override the client-level default timeout for this request, in seconds
155
+ """
156
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
157
+ return self._delete(
158
+ "/v3/blocked_handles",
159
+ body=maybe_transform({"handle": handle}, blocked_handle_unblock_params.BlockedHandleUnblockParams),
160
+ options=make_request_options(
161
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
162
+ ),
163
+ cast_to=NoneType,
164
+ )
165
+
166
+
167
+ class AsyncBlockedHandlesResource(AsyncAPIResource):
168
+ """Block handles — phone numbers, email addresses, SMS short codes, or
169
+ sender IDs.
170
+
171
+ Inbound messages from a blocked handle are dropped before
172
+ they reach your webhooks, and direct sends to a blocked handle are
173
+ rejected with `403` (error code `2026`). Group sends that include
174
+ unblocked members are not restricted.
175
+ """
176
+
177
+ @cached_property
178
+ def with_raw_response(self) -> AsyncBlockedHandlesResourceWithRawResponse:
179
+ """
180
+ This property can be used as a prefix for any HTTP method call to return
181
+ the raw response object instead of the parsed content.
182
+
183
+ For more information, see https://www.github.com/linq-team/linq-python#accessing-raw-response-data-eg-headers
184
+ """
185
+ return AsyncBlockedHandlesResourceWithRawResponse(self)
186
+
187
+ @cached_property
188
+ def with_streaming_response(self) -> AsyncBlockedHandlesResourceWithStreamingResponse:
189
+ """
190
+ An alternative to `.with_raw_response` that doesn't eagerly read the response body.
191
+
192
+ For more information, see https://www.github.com/linq-team/linq-python#with_streaming_response
193
+ """
194
+ return AsyncBlockedHandlesResourceWithStreamingResponse(self)
195
+
196
+ async def list(
197
+ self,
198
+ *,
199
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
200
+ # The extra values given here take precedence over values defined on the client or passed to this method.
201
+ extra_headers: Headers | None = None,
202
+ extra_query: Query | None = None,
203
+ extra_body: Body | None = None,
204
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
205
+ ) -> BlockedHandleListResponse:
206
+ """Returns all handles you have blocked.
207
+
208
+ Inbound messages from a blocked handle are
209
+ dropped and produce no webhooks, and direct sends to a blocked handle are
210
+ rejected with `403` (error code `2026`). Group sends that include unblocked
211
+ members are not restricted.
212
+ """
213
+ return await self._get(
214
+ "/v3/blocked_handles",
215
+ options=make_request_options(
216
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
217
+ ),
218
+ cast_to=BlockedHandleListResponse,
219
+ )
220
+
221
+ async def block(
222
+ self,
223
+ *,
224
+ handle: str,
225
+ reason: str | Omit = omit,
226
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
227
+ # The extra values given here take precedence over values defined on the client or passed to this method.
228
+ extra_headers: Headers | None = None,
229
+ extra_query: Query | None = None,
230
+ extra_body: Body | None = None,
231
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
232
+ ) -> BlockedHandleBlockResponse:
233
+ """
234
+ Blocks a handle — an E.164 phone number, an email address (iMessage sender), an
235
+ SMS short code (e.g. `262966`), or an alphanumeric sender ID. Inbound messages
236
+ from it are dropped and produce no webhooks, and direct sends to it are rejected
237
+ with `403` (error code `2026`); group sends that include unblocked members are
238
+ not restricted. Blocking is idempotent — re-blocking an already blocked handle
239
+ returns the existing entry.
240
+
241
+ Args:
242
+ handle: The handle to block: an E.164 phone number, an email address, an SMS short code
243
+ (3-8 digits), or an alphanumeric sender ID.
244
+
245
+ reason: Optional free-text note on why the handle was blocked
246
+
247
+ extra_headers: Send extra headers
248
+
249
+ extra_query: Add additional query parameters to the request
250
+
251
+ extra_body: Add additional JSON properties to the request
252
+
253
+ timeout: Override the client-level default timeout for this request, in seconds
254
+ """
255
+ return await self._post(
256
+ "/v3/blocked_handles",
257
+ body=await async_maybe_transform(
258
+ {
259
+ "handle": handle,
260
+ "reason": reason,
261
+ },
262
+ blocked_handle_block_params.BlockedHandleBlockParams,
263
+ ),
264
+ options=make_request_options(
265
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
266
+ ),
267
+ cast_to=BlockedHandleBlockResponse,
268
+ )
269
+
270
+ async def unblock(
271
+ self,
272
+ *,
273
+ handle: str,
274
+ # Use the following arguments if you need to pass additional parameters to the API that aren't available via kwargs.
275
+ # The extra values given here take precedence over values defined on the client or passed to this method.
276
+ extra_headers: Headers | None = None,
277
+ extra_query: Query | None = None,
278
+ extra_body: Body | None = None,
279
+ timeout: float | httpx.Timeout | None | NotGiven = not_given,
280
+ ) -> None:
281
+ """Removes a handle from your blocklist.
282
+
283
+ Inbound messages from it will be delivered
284
+ again and sends to it are allowed again. The handle goes in the request body,
285
+ mirroring block — no URL encoding needed.
286
+
287
+ Args:
288
+ handle: The handle to unblock
289
+
290
+ extra_headers: Send extra headers
291
+
292
+ extra_query: Add additional query parameters to the request
293
+
294
+ extra_body: Add additional JSON properties to the request
295
+
296
+ timeout: Override the client-level default timeout for this request, in seconds
297
+ """
298
+ extra_headers = {"Accept": "*/*", **(extra_headers or {})}
299
+ return await self._delete(
300
+ "/v3/blocked_handles",
301
+ body=await async_maybe_transform(
302
+ {"handle": handle}, blocked_handle_unblock_params.BlockedHandleUnblockParams
303
+ ),
304
+ options=make_request_options(
305
+ extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
306
+ ),
307
+ cast_to=NoneType,
308
+ )
309
+
310
+
311
+ class BlockedHandlesResourceWithRawResponse:
312
+ def __init__(self, blocked_handles: BlockedHandlesResource) -> None:
313
+ self._blocked_handles = blocked_handles
314
+
315
+ self.list = to_raw_response_wrapper(
316
+ blocked_handles.list,
317
+ )
318
+ self.block = to_raw_response_wrapper(
319
+ blocked_handles.block,
320
+ )
321
+ self.unblock = to_raw_response_wrapper(
322
+ blocked_handles.unblock,
323
+ )
324
+
325
+
326
+ class AsyncBlockedHandlesResourceWithRawResponse:
327
+ def __init__(self, blocked_handles: AsyncBlockedHandlesResource) -> None:
328
+ self._blocked_handles = blocked_handles
329
+
330
+ self.list = async_to_raw_response_wrapper(
331
+ blocked_handles.list,
332
+ )
333
+ self.block = async_to_raw_response_wrapper(
334
+ blocked_handles.block,
335
+ )
336
+ self.unblock = async_to_raw_response_wrapper(
337
+ blocked_handles.unblock,
338
+ )
339
+
340
+
341
+ class BlockedHandlesResourceWithStreamingResponse:
342
+ def __init__(self, blocked_handles: BlockedHandlesResource) -> None:
343
+ self._blocked_handles = blocked_handles
344
+
345
+ self.list = to_streamed_response_wrapper(
346
+ blocked_handles.list,
347
+ )
348
+ self.block = to_streamed_response_wrapper(
349
+ blocked_handles.block,
350
+ )
351
+ self.unblock = to_streamed_response_wrapper(
352
+ blocked_handles.unblock,
353
+ )
354
+
355
+
356
+ class AsyncBlockedHandlesResourceWithStreamingResponse:
357
+ def __init__(self, blocked_handles: AsyncBlockedHandlesResource) -> None:
358
+ self._blocked_handles = blocked_handles
359
+
360
+ self.list = async_to_streamed_response_wrapper(
361
+ blocked_handles.list,
362
+ )
363
+ self.block = async_to_streamed_response_wrapper(
364
+ blocked_handles.block,
365
+ )
366
+ self.unblock = async_to_streamed_response_wrapper(
367
+ blocked_handles.unblock,
368
+ )