linq-python 0.13.0__tar.gz → 0.15.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 (193) hide show
  1. linq_python-0.15.0/.release-please-manifest.json +3 -0
  2. linq_python-0.15.0/CHANGELOG.md +20 -0
  3. {linq_python-0.13.0 → linq_python-0.15.0}/PKG-INFO +1 -1
  4. {linq_python-0.13.0 → linq_python-0.15.0}/pyproject.toml +1 -1
  5. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_version.py +1 -1
  6. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/resources/capability.py +2 -2
  7. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/__init__.py +1 -1
  8. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/capability_check_i_message_params.py +2 -2
  9. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chat.py +6 -0
  10. linq_python-0.15.0/src/linq/types/chats/sent_message.py +139 -0
  11. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/message.py +80 -2
  12. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/message_content_param.py +83 -3
  13. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/message_event_v2.py +68 -2
  14. linq_python-0.15.0/src/linq/types/phone_number_list_response.py +99 -0
  15. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/phone_number_status_updated_webhook_event.py +26 -2
  16. {linq_python-0.13.0 → linq_python-0.15.0}/uv.lock +1 -1
  17. linq_python-0.13.0/.release-please-manifest.json +0 -3
  18. linq_python-0.13.0/CHANGELOG.md +0 -8
  19. linq_python-0.13.0/src/linq/types/chats/sent_message.py +0 -61
  20. linq_python-0.13.0/src/linq/types/phone_number_list_response.py +0 -60
  21. {linq_python-0.13.0 → linq_python-0.15.0}/.gitignore +0 -0
  22. {linq_python-0.13.0 → linq_python-0.15.0}/CONTRIBUTING.md +0 -0
  23. {linq_python-0.13.0 → linq_python-0.15.0}/LICENSE +0 -0
  24. {linq_python-0.13.0 → linq_python-0.15.0}/README.md +0 -0
  25. {linq_python-0.13.0 → linq_python-0.15.0}/SECURITY.md +0 -0
  26. {linq_python-0.13.0 → linq_python-0.15.0}/api.md +0 -0
  27. {linq_python-0.13.0 → linq_python-0.15.0}/bin/check-release-environment +0 -0
  28. {linq_python-0.13.0 → linq_python-0.15.0}/bin/publish-pypi +0 -0
  29. {linq_python-0.13.0 → linq_python-0.15.0}/examples/.keep +0 -0
  30. {linq_python-0.13.0 → linq_python-0.15.0}/release-please-config.json +0 -0
  31. {linq_python-0.13.0 → linq_python-0.15.0}/requirements-dev.lock +0 -0
  32. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/__init__.py +0 -0
  33. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_base_client.py +0 -0
  34. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_client.py +0 -0
  35. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_compat.py +0 -0
  36. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_constants.py +0 -0
  37. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_exceptions.py +0 -0
  38. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_files.py +0 -0
  39. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_models.py +0 -0
  40. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_qs.py +0 -0
  41. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_resource.py +0 -0
  42. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_response.py +0 -0
  43. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_streaming.py +0 -0
  44. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_types.py +0 -0
  45. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_utils/__init__.py +0 -0
  46. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_utils/_compat.py +0 -0
  47. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_utils/_datetime_parse.py +0 -0
  48. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_utils/_json.py +0 -0
  49. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_utils/_logs.py +0 -0
  50. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_utils/_path.py +0 -0
  51. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_utils/_proxy.py +0 -0
  52. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_utils/_reflection.py +0 -0
  53. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_utils/_resources_proxy.py +0 -0
  54. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_utils/_streams.py +0 -0
  55. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_utils/_sync.py +0 -0
  56. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_utils/_transform.py +0 -0
  57. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_utils/_typing.py +0 -0
  58. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/_utils/_utils.py +0 -0
  59. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/lib/.keep +0 -0
  60. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/pagination.py +0 -0
  61. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/py.typed +0 -0
  62. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/resources/__init__.py +0 -0
  63. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/resources/attachments.py +0 -0
  64. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/resources/chats/__init__.py +0 -0
  65. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/resources/chats/chats.py +0 -0
  66. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/resources/chats/location.py +0 -0
  67. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/resources/chats/messages.py +0 -0
  68. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/resources/chats/participants.py +0 -0
  69. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/resources/chats/typing.py +0 -0
  70. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/resources/contact_card.py +0 -0
  71. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/resources/messages.py +0 -0
  72. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/resources/phone_numbers.py +0 -0
  73. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/resources/phonenumbers.py +0 -0
  74. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/resources/webhook_events.py +0 -0
  75. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/resources/webhook_subscriptions.py +0 -0
  76. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/resources/webhooks.py +0 -0
  77. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/attachment_create_params.py +0 -0
  78. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/attachment_create_response.py +0 -0
  79. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/attachment_retrieve_response.py +0 -0
  80. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/capability_check_RCS_params.py +0 -0
  81. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chat_create_params.py +0 -0
  82. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chat_create_response.py +0 -0
  83. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chat_created_webhook_event.py +0 -0
  84. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chat_group_icon_update_failed_webhook_event.py +0 -0
  85. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chat_group_icon_updated_webhook_event.py +0 -0
  86. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chat_group_name_update_failed_webhook_event.py +0 -0
  87. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chat_group_name_updated_webhook_event.py +0 -0
  88. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chat_leave_chat_response.py +0 -0
  89. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chat_list_chats_params.py +0 -0
  90. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chat_send_voicememo_params.py +0 -0
  91. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chat_send_voicememo_response.py +0 -0
  92. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chat_typing_indicator_started_webhook_event.py +0 -0
  93. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chat_typing_indicator_stopped_webhook_event.py +0 -0
  94. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chat_update_params.py +0 -0
  95. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chat_update_response.py +0 -0
  96. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chats/__init__.py +0 -0
  97. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chats/get_chat_location_response.py +0 -0
  98. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chats/location_request_response.py +0 -0
  99. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chats/message_list_params.py +0 -0
  100. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chats/message_send_params.py +0 -0
  101. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chats/message_send_response.py +0 -0
  102. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chats/participant_add_params.py +0 -0
  103. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chats/participant_add_response.py +0 -0
  104. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chats/participant_remove_params.py +0 -0
  105. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/chats/participant_remove_response.py +0 -0
  106. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/contact_card_create_params.py +0 -0
  107. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/contact_card_retrieve_params.py +0 -0
  108. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/contact_card_retrieve_response.py +0 -0
  109. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/contact_card_update_params.py +0 -0
  110. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/handle_check_response.py +0 -0
  111. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/link_part_param.py +0 -0
  112. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/media_part_param.py +0 -0
  113. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/message_add_reaction_params.py +0 -0
  114. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/message_add_reaction_response.py +0 -0
  115. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/message_delivered_webhook_event.py +0 -0
  116. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/message_edited_webhook_event.py +0 -0
  117. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/message_effect.py +0 -0
  118. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/message_effect_param.py +0 -0
  119. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/message_failed_webhook_event.py +0 -0
  120. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/message_list_messages_thread_params.py +0 -0
  121. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/message_read_webhook_event.py +0 -0
  122. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/message_received_webhook_event.py +0 -0
  123. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/message_sent_webhook_event.py +0 -0
  124. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/message_update_params.py +0 -0
  125. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/participant_added_webhook_event.py +0 -0
  126. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/participant_removed_webhook_event.py +0 -0
  127. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/phonenumber_list_response.py +0 -0
  128. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/reaction_added_webhook_event.py +0 -0
  129. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/reaction_event_base.py +0 -0
  130. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/reaction_removed_webhook_event.py +0 -0
  131. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/reply_to.py +0 -0
  132. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/reply_to_param.py +0 -0
  133. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/schemas_media_part_response.py +0 -0
  134. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/schemas_message_effect.py +0 -0
  135. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/schemas_text_part_response.py +0 -0
  136. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/set_contact_card.py +0 -0
  137. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/shared/__init__.py +0 -0
  138. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/shared/chat_handle.py +0 -0
  139. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/shared/link_part_response.py +0 -0
  140. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/shared/media_part_response.py +0 -0
  141. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/shared/reaction.py +0 -0
  142. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/shared/reaction_type.py +0 -0
  143. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/shared/service_type.py +0 -0
  144. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/shared/text_decoration.py +0 -0
  145. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/shared/text_part_response.py +0 -0
  146. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/shared_params/__init__.py +0 -0
  147. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/shared_params/reaction_type.py +0 -0
  148. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/shared_params/service_type.py +0 -0
  149. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/shared_params/text_decoration.py +0 -0
  150. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/supported_content_type.py +0 -0
  151. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/text_part_param.py +0 -0
  152. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/unwrap_webhook_event.py +0 -0
  153. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/webhook_event_list_response.py +0 -0
  154. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/webhook_event_type.py +0 -0
  155. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/webhook_subscription.py +0 -0
  156. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/webhook_subscription_create_params.py +0 -0
  157. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/webhook_subscription_create_response.py +0 -0
  158. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/webhook_subscription_list_response.py +0 -0
  159. {linq_python-0.13.0 → linq_python-0.15.0}/src/linq/types/webhook_subscription_update_params.py +0 -0
  160. {linq_python-0.13.0 → linq_python-0.15.0}/tests/__init__.py +0 -0
  161. {linq_python-0.13.0 → linq_python-0.15.0}/tests/api_resources/__init__.py +0 -0
  162. {linq_python-0.13.0 → linq_python-0.15.0}/tests/api_resources/chats/__init__.py +0 -0
  163. {linq_python-0.13.0 → linq_python-0.15.0}/tests/api_resources/chats/test_location.py +0 -0
  164. {linq_python-0.13.0 → linq_python-0.15.0}/tests/api_resources/chats/test_messages.py +0 -0
  165. {linq_python-0.13.0 → linq_python-0.15.0}/tests/api_resources/chats/test_participants.py +0 -0
  166. {linq_python-0.13.0 → linq_python-0.15.0}/tests/api_resources/chats/test_typing.py +0 -0
  167. {linq_python-0.13.0 → linq_python-0.15.0}/tests/api_resources/test_attachments.py +0 -0
  168. {linq_python-0.13.0 → linq_python-0.15.0}/tests/api_resources/test_capability.py +0 -0
  169. {linq_python-0.13.0 → linq_python-0.15.0}/tests/api_resources/test_chats.py +0 -0
  170. {linq_python-0.13.0 → linq_python-0.15.0}/tests/api_resources/test_contact_card.py +0 -0
  171. {linq_python-0.13.0 → linq_python-0.15.0}/tests/api_resources/test_messages.py +0 -0
  172. {linq_python-0.13.0 → linq_python-0.15.0}/tests/api_resources/test_phone_numbers.py +0 -0
  173. {linq_python-0.13.0 → linq_python-0.15.0}/tests/api_resources/test_phonenumbers.py +0 -0
  174. {linq_python-0.13.0 → linq_python-0.15.0}/tests/api_resources/test_webhook_events.py +0 -0
  175. {linq_python-0.13.0 → linq_python-0.15.0}/tests/api_resources/test_webhook_subscriptions.py +0 -0
  176. {linq_python-0.13.0 → linq_python-0.15.0}/tests/api_resources/test_webhooks.py +0 -0
  177. {linq_python-0.13.0 → linq_python-0.15.0}/tests/conftest.py +0 -0
  178. {linq_python-0.13.0 → linq_python-0.15.0}/tests/sample_file.txt +0 -0
  179. {linq_python-0.13.0 → linq_python-0.15.0}/tests/test_client.py +0 -0
  180. {linq_python-0.13.0 → linq_python-0.15.0}/tests/test_extract_files.py +0 -0
  181. {linq_python-0.13.0 → linq_python-0.15.0}/tests/test_files.py +0 -0
  182. {linq_python-0.13.0 → linq_python-0.15.0}/tests/test_models.py +0 -0
  183. {linq_python-0.13.0 → linq_python-0.15.0}/tests/test_qs.py +0 -0
  184. {linq_python-0.13.0 → linq_python-0.15.0}/tests/test_required_args.py +0 -0
  185. {linq_python-0.13.0 → linq_python-0.15.0}/tests/test_response.py +0 -0
  186. {linq_python-0.13.0 → linq_python-0.15.0}/tests/test_streaming.py +0 -0
  187. {linq_python-0.13.0 → linq_python-0.15.0}/tests/test_transform.py +0 -0
  188. {linq_python-0.13.0 → linq_python-0.15.0}/tests/test_utils/test_datetime_parse.py +0 -0
  189. {linq_python-0.13.0 → linq_python-0.15.0}/tests/test_utils/test_json.py +0 -0
  190. {linq_python-0.13.0 → linq_python-0.15.0}/tests/test_utils/test_path.py +0 -0
  191. {linq_python-0.13.0 → linq_python-0.15.0}/tests/test_utils/test_proxy.py +0 -0
  192. {linq_python-0.13.0 → linq_python-0.15.0}/tests/test_utils/test_typing.py +0 -0
  193. {linq_python-0.13.0 → linq_python-0.15.0}/tests/utils.py +0 -0
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.15.0"
3
+ }
@@ -0,0 +1,20 @@
1
+ # Changelog
2
+
3
+ ## [0.15.0](https://github.com/linq-team/linq-python/compare/v0.14.0...v0.15.0) (2026-06-21)
4
+
5
+
6
+ ### Features
7
+
8
+ * phone line reputation + group chat icon; remove iMessage app image layout & session_id ([#32](https://github.com/linq-team/linq-python/issues/32)) ([736fe20](https://github.com/linq-team/linq-python/commit/736fe201b71b3c3bf88c5621621a0a5fbee4ac56))
9
+
10
+ ## [0.14.0](https://github.com/linq-team/linq-python/compare/v0.13.0...v0.14.0) (2026-06-10)
11
+
12
+
13
+ ### Features
14
+
15
+ * regenerate SDKs from updated API spec ([#29](https://github.com/linq-team/linq-python/issues/29)) ([dd7f2d7](https://github.com/linq-team/linq-python/commit/dd7f2d7e19e85fa9f61f6367f7e2a1cc942765bf))
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * **ci:** parse release PR number in shell, not fromJSON in env ([#26](https://github.com/linq-team/linq-python/issues/26)) ([a364403](https://github.com/linq-team/linq-python/commit/a364403289e482298f8b0d78e8e45de8fb87b79d))
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: linq-python
3
- Version: 0.13.0
3
+ Version: 0.15.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.13.0"
3
+ version = "0.15.0"
4
4
  description = "The official Python library for the linq-api-v3 API"
5
5
  dynamic = ["readme"]
6
6
  license = "Apache-2.0"
@@ -1,4 +1,4 @@
1
1
  # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
2
 
3
3
  __title__ = "linq"
4
- __version__ = "0.13.0" # x-release-please-version
4
+ __version__ = "0.15.0" # x-release-please-version
@@ -82,7 +82,7 @@ class CapabilityResource(SyncAPIResource):
82
82
  "address": address,
83
83
  "from_": from_,
84
84
  },
85
- capability_check_i_message_params.CapabilityCheckiMessageParams,
85
+ capability_check_i_message_params.CapabilityCheckIMessageParams,
86
86
  ),
87
87
  options=make_request_options(
88
88
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
@@ -196,7 +196,7 @@ class AsyncCapabilityResource(AsyncAPIResource):
196
196
  "address": address,
197
197
  "from_": from_,
198
198
  },
199
- capability_check_i_message_params.CapabilityCheckiMessageParams,
199
+ capability_check_i_message_params.CapabilityCheckIMessageParams,
200
200
  ),
201
201
  options=make_request_options(
202
202
  extra_headers=extra_headers, extra_query=extra_query, extra_body=extra_body, timeout=timeout
@@ -65,7 +65,7 @@ from .message_received_webhook_event import MessageReceivedWebhookEvent as Messa
65
65
  from .reaction_removed_webhook_event import ReactionRemovedWebhookEvent as ReactionRemovedWebhookEvent
66
66
  from .message_delivered_webhook_event import MessageDeliveredWebhookEvent as MessageDeliveredWebhookEvent
67
67
  from .participant_added_webhook_event import ParticipantAddedWebhookEvent as ParticipantAddedWebhookEvent
68
- from .capability_check_i_message_params import CapabilityCheckiMessageParams as CapabilityCheckiMessageParams
68
+ from .capability_check_i_message_params import CapabilityCheckIMessageParams as CapabilityCheckIMessageParams
69
69
  from .participant_removed_webhook_event import ParticipantRemovedWebhookEvent as ParticipantRemovedWebhookEvent
70
70
  from .webhook_subscription_create_params import WebhookSubscriptionCreateParams as WebhookSubscriptionCreateParams
71
71
  from .webhook_subscription_list_response import WebhookSubscriptionListResponse as WebhookSubscriptionListResponse
@@ -6,10 +6,10 @@ from typing_extensions import Required, Annotated, TypedDict
6
6
 
7
7
  from .._utils import PropertyInfo
8
8
 
9
- __all__ = ["CapabilityCheckiMessageParams"]
9
+ __all__ = ["CapabilityCheckIMessageParams"]
10
10
 
11
11
 
12
- class CapabilityCheckiMessageParams(TypedDict, total=False):
12
+ class CapabilityCheckIMessageParams(TypedDict, total=False):
13
13
  address: Required[str]
14
14
  """The recipient phone number or email address to check"""
15
15
 
@@ -83,5 +83,11 @@ class Chat(BaseModel):
83
83
  updated_at: datetime
84
84
  """When the chat was last updated"""
85
85
 
86
+ group_chat_icon: Optional[str] = None
87
+ """URL of the group chat icon.
88
+
89
+ Only set for group chats that have an icon; `null` otherwise.
90
+ """
91
+
86
92
  service: Optional[ServiceType] = None
87
93
  """Messaging service type"""
@@ -0,0 +1,139 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List, Union, Optional
4
+ from datetime import datetime
5
+ from typing_extensions import Literal, TypeAlias
6
+
7
+ from ..._models import BaseModel
8
+ from ..reply_to import ReplyTo
9
+ from ..message_effect import MessageEffect
10
+ from ..shared.reaction import Reaction
11
+ from ..shared.chat_handle import ChatHandle
12
+ from ..shared.service_type import ServiceType
13
+ from ..shared.link_part_response import LinkPartResponse
14
+ from ..shared.text_part_response import TextPartResponse
15
+ from ..shared.media_part_response import MediaPartResponse
16
+
17
+ __all__ = [
18
+ "SentMessage",
19
+ "Part",
20
+ "PartIMessageAppPartResponse",
21
+ "PartIMessageAppPartResponseApp",
22
+ "PartIMessageAppPartResponseLayout",
23
+ ]
24
+
25
+
26
+ class PartIMessageAppPartResponseApp(BaseModel):
27
+ """Identifies the iMessage app (Messages app extension) that backs the card."""
28
+
29
+ bundle_id: str
30
+ """Bundle identifier of the Messages app extension. Must not contain `:`."""
31
+
32
+ name: str
33
+ """Display name of the app, shown by Messages' fallback UI."""
34
+
35
+ team_id: str
36
+ """The app's 10-character uppercase alphanumeric team identifier."""
37
+
38
+ app_store_id: Optional[int] = None
39
+ """The owning app's App Store id (optional).
40
+
41
+ When set, recipients without the iMessage app installed see a "Get the app"
42
+ affordance.
43
+ """
44
+
45
+
46
+ class PartIMessageAppPartResponseLayout(BaseModel):
47
+ """Visible layout of the card.
48
+
49
+ At least one of
50
+ `caption`, `subcaption`, `trailing_caption`, or `trailing_subcaption` must be set, otherwise
51
+ the card renders as an empty bubble. Any image on the card is drawn by the recipient's
52
+ installed app extension; it cannot be supplied here.
53
+ """
54
+
55
+ caption: Optional[str] = None
56
+ """Primary label, top-left and bold."""
57
+
58
+ subcaption: Optional[str] = None
59
+ """Secondary label, below `caption` on the left."""
60
+
61
+ trailing_caption: Optional[str] = None
62
+ """Label shown top-right."""
63
+
64
+ trailing_subcaption: Optional[str] = None
65
+ """Label shown below `trailing_caption`, on the right."""
66
+
67
+
68
+ class PartIMessageAppPartResponse(BaseModel):
69
+ """An iMessage app card part."""
70
+
71
+ app: PartIMessageAppPartResponseApp
72
+ """Identifies the iMessage app (Messages app extension) that backs the card."""
73
+
74
+ layout: PartIMessageAppPartResponseLayout
75
+ """Visible layout of the card.
76
+
77
+ At least one of `caption`, `subcaption`, `trailing_caption`, or
78
+ `trailing_subcaption` must be set, otherwise the card renders as an empty
79
+ bubble. Any image on the card is drawn by the recipient's installed app
80
+ extension; it cannot be supplied here.
81
+ """
82
+
83
+ reactions: Optional[List[Reaction]] = None
84
+ """Reactions on this message part"""
85
+
86
+ type: Literal["imessage_app"]
87
+ """Indicates this is an iMessage app card part."""
88
+
89
+ url: str
90
+ """The URL delivered to the iMessage app on tap."""
91
+
92
+ fallback_text: Optional[str] = None
93
+ """Fallback text for surfaces that cannot render the card."""
94
+
95
+
96
+ Part: TypeAlias = Union[TextPartResponse, MediaPartResponse, LinkPartResponse, PartIMessageAppPartResponse]
97
+
98
+
99
+ class SentMessage(BaseModel):
100
+ """A message that was sent (used in CreateChat and SendMessage responses)"""
101
+
102
+ id: str
103
+ """Message identifier (UUID)"""
104
+
105
+ created_at: datetime
106
+ """When the message was created"""
107
+
108
+ delivery_status: Literal["pending", "queued", "sent", "delivered", "received", "read", "failed"]
109
+ """Current delivery status of a message"""
110
+
111
+ is_read: bool
112
+ """DEPRECATED: Use `delivery_status == "read"` instead.
113
+
114
+ Whether the message has been read.
115
+ """
116
+
117
+ parts: List[Part]
118
+ """Message parts in order (text, media, and link)"""
119
+
120
+ sent_at: Optional[datetime] = None
121
+ """When the message was actually sent (null if still queued)"""
122
+
123
+ delivered_at: Optional[datetime] = None
124
+ """When the message was delivered"""
125
+
126
+ effect: Optional[MessageEffect] = None
127
+ """iMessage effect applied to a message (screen or bubble effect)"""
128
+
129
+ from_handle: Optional[ChatHandle] = None
130
+ """The sender of this message as a full handle object"""
131
+
132
+ preferred_service: Optional[ServiceType] = None
133
+ """Messaging service type"""
134
+
135
+ reply_to: Optional[ReplyTo] = None
136
+ """Indicates this message is a threaded reply to another message"""
137
+
138
+ service: Optional[ServiceType] = None
139
+ """Messaging service type"""
@@ -9,15 +9,93 @@ from pydantic import Field as FieldInfo
9
9
  from .._models import BaseModel
10
10
  from .reply_to import ReplyTo
11
11
  from .message_effect import MessageEffect
12
+ from .shared.reaction import Reaction
12
13
  from .shared.chat_handle import ChatHandle
13
14
  from .shared.service_type import ServiceType
14
15
  from .shared.link_part_response import LinkPartResponse
15
16
  from .shared.text_part_response import TextPartResponse
16
17
  from .shared.media_part_response import MediaPartResponse
17
18
 
18
- __all__ = ["Message", "Part"]
19
+ __all__ = [
20
+ "Message",
21
+ "Part",
22
+ "PartIMessageAppPartResponse",
23
+ "PartIMessageAppPartResponseApp",
24
+ "PartIMessageAppPartResponseLayout",
25
+ ]
19
26
 
20
- Part: TypeAlias = Union[TextPartResponse, MediaPartResponse, LinkPartResponse]
27
+
28
+ class PartIMessageAppPartResponseApp(BaseModel):
29
+ """Identifies the iMessage app (Messages app extension) that backs the card."""
30
+
31
+ bundle_id: str
32
+ """Bundle identifier of the Messages app extension. Must not contain `:`."""
33
+
34
+ name: str
35
+ """Display name of the app, shown by Messages' fallback UI."""
36
+
37
+ team_id: str
38
+ """The app's 10-character uppercase alphanumeric team identifier."""
39
+
40
+ app_store_id: Optional[int] = None
41
+ """The owning app's App Store id (optional).
42
+
43
+ When set, recipients without the iMessage app installed see a "Get the app"
44
+ affordance.
45
+ """
46
+
47
+
48
+ class PartIMessageAppPartResponseLayout(BaseModel):
49
+ """Visible layout of the card.
50
+
51
+ At least one of
52
+ `caption`, `subcaption`, `trailing_caption`, or `trailing_subcaption` must be set, otherwise
53
+ the card renders as an empty bubble. Any image on the card is drawn by the recipient's
54
+ installed app extension; it cannot be supplied here.
55
+ """
56
+
57
+ caption: Optional[str] = None
58
+ """Primary label, top-left and bold."""
59
+
60
+ subcaption: Optional[str] = None
61
+ """Secondary label, below `caption` on the left."""
62
+
63
+ trailing_caption: Optional[str] = None
64
+ """Label shown top-right."""
65
+
66
+ trailing_subcaption: Optional[str] = None
67
+ """Label shown below `trailing_caption`, on the right."""
68
+
69
+
70
+ class PartIMessageAppPartResponse(BaseModel):
71
+ """An iMessage app card part."""
72
+
73
+ app: PartIMessageAppPartResponseApp
74
+ """Identifies the iMessage app (Messages app extension) that backs the card."""
75
+
76
+ layout: PartIMessageAppPartResponseLayout
77
+ """Visible layout of the card.
78
+
79
+ At least one of `caption`, `subcaption`, `trailing_caption`, or
80
+ `trailing_subcaption` must be set, otherwise the card renders as an empty
81
+ bubble. Any image on the card is drawn by the recipient's installed app
82
+ extension; it cannot be supplied here.
83
+ """
84
+
85
+ reactions: Optional[List[Reaction]] = None
86
+ """Reactions on this message part"""
87
+
88
+ type: Literal["imessage_app"]
89
+ """Indicates this is an iMessage app card part."""
90
+
91
+ url: str
92
+ """The URL delivered to the iMessage app on tap."""
93
+
94
+ fallback_text: Optional[str] = None
95
+ """Fallback text for surfaces that cannot render the card."""
96
+
97
+
98
+ Part: TypeAlias = Union[TextPartResponse, MediaPartResponse, LinkPartResponse, PartIMessageAppPartResponse]
21
99
 
22
100
 
23
101
  class Message(BaseModel):
@@ -3,7 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  from typing import Union, Iterable
6
- from typing_extensions import Required, TypeAlias, TypedDict
6
+ from typing_extensions import Literal, Required, TypeAlias, TypedDict
7
7
 
8
8
  from .reply_to_param import ReplyToParam
9
9
  from .link_part_param import LinkPartParam
@@ -12,9 +12,89 @@ from .media_part_param import MediaPartParam
12
12
  from .shared.service_type import ServiceType
13
13
  from .message_effect_param import MessageEffectParam
14
14
 
15
- __all__ = ["MessageContentParam", "Part"]
15
+ __all__ = ["MessageContentParam", "Part", "PartIMessageAppPart", "PartIMessageAppPartApp", "PartIMessageAppPartLayout"]
16
16
 
17
- Part: TypeAlias = Union[TextPartParam, MediaPartParam, LinkPartParam]
17
+
18
+ class PartIMessageAppPartApp(TypedDict, total=False):
19
+ """Identifies the iMessage app (Messages app extension) that backs the card."""
20
+
21
+ bundle_id: Required[str]
22
+ """Bundle identifier of the Messages app extension. Must not contain `:`."""
23
+
24
+ name: Required[str]
25
+ """Display name of the app, shown by Messages' fallback UI."""
26
+
27
+ team_id: Required[str]
28
+ """The app's 10-character uppercase alphanumeric team identifier."""
29
+
30
+ app_store_id: int
31
+ """The owning app's App Store id (optional).
32
+
33
+ When set, recipients without the iMessage app installed see a "Get the app"
34
+ affordance.
35
+ """
36
+
37
+
38
+ class PartIMessageAppPartLayout(TypedDict, total=False):
39
+ """Visible layout of the card.
40
+
41
+ At least one of
42
+ `caption`, `subcaption`, `trailing_caption`, or `trailing_subcaption` must be set, otherwise
43
+ the card renders as an empty bubble. Any image on the card is drawn by the recipient's
44
+ installed app extension; it cannot be supplied here.
45
+ """
46
+
47
+ caption: str
48
+ """Primary label, top-left and bold."""
49
+
50
+ subcaption: str
51
+ """Secondary label, below `caption` on the left."""
52
+
53
+ trailing_caption: str
54
+ """Label shown top-right."""
55
+
56
+ trailing_subcaption: str
57
+ """Label shown below `trailing_caption`, on the right."""
58
+
59
+
60
+ class PartIMessageAppPart(TypedDict, total=False):
61
+ """An iMessage app card, backed by a Messages app extension.
62
+
63
+ iMessage only —
64
+ an `imessage_app` part must be the **only** part in the message and is never delivered over
65
+ SMS/RCS. See the IMessageAppServiceUnsupported (2018) and RecipientUnsupportedMessageType
66
+ (4005) error codes.
67
+ """
68
+
69
+ app: Required[PartIMessageAppPartApp]
70
+ """Identifies the iMessage app (Messages app extension) that backs the card."""
71
+
72
+ layout: Required[PartIMessageAppPartLayout]
73
+ """Visible layout of the card.
74
+
75
+ At least one of `caption`, `subcaption`, `trailing_caption`, or
76
+ `trailing_subcaption` must be set, otherwise the card renders as an empty
77
+ bubble. Any image on the card is drawn by the recipient's installed app
78
+ extension; it cannot be supplied here.
79
+ """
80
+
81
+ type: Required[Literal["imessage_app"]]
82
+ """Indicates this is an iMessage app card part."""
83
+
84
+ url: Required[str]
85
+ """
86
+ Absolute HTTPS URL delivered to the recipient's installed iMessage app when they
87
+ tap the card. Opaque to Messages.
88
+ """
89
+
90
+ fallback_text: str
91
+ """Text shown on surfaces that cannot render the card (notifications, lock screen).
92
+
93
+ Defaults to the caption when omitted.
94
+ """
95
+
96
+
97
+ Part: TypeAlias = Union[TextPartParam, MediaPartParam, LinkPartParam, PartIMessageAppPart]
18
98
 
19
99
 
20
100
  class MessageContentParam(TypedDict, total=False):
@@ -12,7 +12,17 @@ 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", "ChatHealthStatus", "Part", "PartSchemasLinkPartResponse", "ReplyTo"]
15
+ __all__ = [
16
+ "MessageEventV2",
17
+ "Chat",
18
+ "ChatHealthStatus",
19
+ "Part",
20
+ "PartSchemasLinkPartResponse",
21
+ "PartSchemasIMessageAppPartResponse",
22
+ "PartSchemasIMessageAppPartResponseApp",
23
+ "PartSchemasIMessageAppPartResponseLayout",
24
+ "ReplyTo",
25
+ ]
16
26
 
17
27
 
18
28
  class ChatHealthStatus(BaseModel):
@@ -77,8 +87,64 @@ class PartSchemasLinkPartResponse(BaseModel):
77
87
  """The URL"""
78
88
 
79
89
 
90
+ class PartSchemasIMessageAppPartResponseApp(BaseModel):
91
+ """Identifies the iMessage app (Messages app extension) that backs the card."""
92
+
93
+ bundle_id: str
94
+ """Bundle identifier of the Messages app extension."""
95
+
96
+ name: str
97
+ """Display name of the app."""
98
+
99
+ team_id: str
100
+ """The app's 10-character team identifier."""
101
+
102
+ app_store_id: Optional[int] = None
103
+ """The owning app's App Store id, when known."""
104
+
105
+
106
+ class PartSchemasIMessageAppPartResponseLayout(BaseModel):
107
+ """Visible layout of the card."""
108
+
109
+ caption: Optional[str] = None
110
+ """Primary label, top-left and bold."""
111
+
112
+ subcaption: Optional[str] = None
113
+ """Secondary label, below caption on the left."""
114
+
115
+ trailing_caption: Optional[str] = None
116
+ """Label shown top-right."""
117
+
118
+ trailing_subcaption: Optional[str] = None
119
+ """Label shown below trailing_caption."""
120
+
121
+
122
+ class PartSchemasIMessageAppPartResponse(BaseModel):
123
+ """An iMessage app card part."""
124
+
125
+ app: PartSchemasIMessageAppPartResponseApp
126
+ """Identifies the iMessage app (Messages app extension) that backs the card."""
127
+
128
+ layout: PartSchemasIMessageAppPartResponseLayout
129
+ """Visible layout of the card."""
130
+
131
+ type: Literal["imessage_app"]
132
+ """Indicates this is an iMessage app card part."""
133
+
134
+ url: str
135
+ """The URL delivered to the iMessage app on tap."""
136
+
137
+ fallback_text: Optional[str] = None
138
+ """Fallback text for surfaces that cannot render the card."""
139
+
140
+
80
141
  Part: TypeAlias = Annotated[
81
- Union[SchemasTextPartResponse, SchemasMediaPartResponse, PartSchemasLinkPartResponse],
142
+ Union[
143
+ SchemasTextPartResponse,
144
+ SchemasMediaPartResponse,
145
+ PartSchemasLinkPartResponse,
146
+ PartSchemasIMessageAppPartResponse,
147
+ ],
82
148
  PropertyInfo(discriminator="type"),
83
149
  ]
84
150
 
@@ -0,0 +1,99 @@
1
+ # File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
2
+
3
+ from typing import List
4
+ from typing_extensions import Literal
5
+
6
+ from .._models import BaseModel
7
+
8
+ __all__ = ["PhoneNumberListResponse", "PhoneNumber", "PhoneNumberHealthStatus", "PhoneNumberReputation"]
9
+
10
+
11
+ class PhoneNumberHealthStatus(BaseModel):
12
+ """**[BETA]** Current reputation for a phone line.
13
+
14
+ Always present — lines start at `HEALTHY` and may shift based on aggregate engagement and delivery signals across all conversations on the line.
15
+
16
+ Unlike chat health, line reputation does not include `opted_out` — opt-out applies to individual recipients, not the whole line.
17
+
18
+ See the [Phone Health guide](/guides/phone-numbers/phone-health) for what each status means and how to react.
19
+ """
20
+
21
+ doc_url: str
22
+ """Deep-link to the relevant section of the Phone Health guide for this status."""
23
+
24
+ status: Literal["HEALTHY", "AT_RISK", "CRITICAL"]
25
+ """Current reputation of this phone line as assessed by risk-service.
26
+
27
+ - `HEALTHY` — No elevated risk detected.
28
+ - `AT_RISK` — Elevated risk indicators present; consider reducing send volume or
29
+ reviewing messaging patterns.
30
+ - `CRITICAL` — High risk; further sending may result in line flagging or
31
+ restriction.
32
+
33
+ Defaults to `HEALTHY` for lines that have not yet been scored.
34
+ """
35
+
36
+
37
+ class PhoneNumberReputation(BaseModel):
38
+ """**[BETA]** Current reputation for a phone line.
39
+
40
+ Always present — lines start at `HEALTHY` and may shift based on aggregate engagement and delivery signals across all conversations on the line.
41
+
42
+ Unlike chat health, line reputation does not include `opted_out` — opt-out applies to individual recipients, not the whole line.
43
+
44
+ See the [Phone Health guide](/guides/phone-numbers/phone-health) for what each status means and how to react.
45
+ """
46
+
47
+ doc_url: str
48
+ """Deep-link to the relevant section of the Phone Health guide for this status."""
49
+
50
+ status: Literal["HEALTHY", "AT_RISK", "CRITICAL"]
51
+ """Current reputation of this phone line as assessed by risk-service.
52
+
53
+ - `HEALTHY` — No elevated risk detected.
54
+ - `AT_RISK` — Elevated risk indicators present; consider reducing send volume or
55
+ reviewing messaging patterns.
56
+ - `CRITICAL` — High risk; further sending may result in line flagging or
57
+ restriction.
58
+
59
+ Defaults to `HEALTHY` for lines that have not yet been scored.
60
+ """
61
+
62
+
63
+ class PhoneNumber(BaseModel):
64
+ id: str
65
+ """Unique identifier for the phone number"""
66
+
67
+ health_status: PhoneNumberHealthStatus
68
+ """**[BETA]** Current reputation for a phone line.
69
+
70
+ Always present — lines start at `HEALTHY` and may shift based on aggregate
71
+ engagement and delivery signals across all conversations on the line.
72
+
73
+ Unlike chat health, line reputation does not include `opted_out` — opt-out
74
+ applies to individual recipients, not the whole line.
75
+
76
+ See the [Phone Health guide](/guides/phone-numbers/phone-health) for what each
77
+ status means and how to react.
78
+ """
79
+
80
+ phone_number: str
81
+ """Phone number in E.164 format"""
82
+
83
+ reputation: PhoneNumberReputation
84
+ """**[BETA]** Current reputation for a phone line.
85
+
86
+ Always present — lines start at `HEALTHY` and may shift based on aggregate
87
+ engagement and delivery signals across all conversations on the line.
88
+
89
+ Unlike chat health, line reputation does not include `opted_out` — opt-out
90
+ applies to individual recipients, not the whole line.
91
+
92
+ See the [Phone Health guide](/guides/phone-numbers/phone-health) for what each
93
+ status means and how to react.
94
+ """
95
+
96
+
97
+ class PhoneNumberListResponse(BaseModel):
98
+ phone_numbers: List[PhoneNumber]
99
+ """List of phone numbers assigned to the partner"""
@@ -15,7 +15,19 @@ class Data(BaseModel):
15
15
  """When the status change occurred"""
16
16
 
17
17
  new_health_status: Literal["HEALTHY", "AT_RISK", "CRITICAL"]
18
- """The new line health status"""
18
+ """Current reputation of this phone line as assessed by risk-service.
19
+
20
+ - `HEALTHY` — No elevated risk detected.
21
+ - `AT_RISK` — Elevated risk indicators present; consider reducing send volume or
22
+ reviewing messaging patterns.
23
+ - `CRITICAL` — High risk; further sending may result in line flagging or
24
+ restriction.
25
+
26
+ Defaults to `HEALTHY` for lines that have not yet been scored.
27
+ """
28
+
29
+ new_reputation: Literal["HEALTHY", "AT_RISK", "CRITICAL"]
30
+ """The new line reputation"""
19
31
 
20
32
  new_status: Literal["ACTIVE", "FLAGGED"]
21
33
  """The new service status"""
@@ -24,7 +36,19 @@ class Data(BaseModel):
24
36
  """Phone number in E.164 format"""
25
37
 
26
38
  previous_health_status: Literal["HEALTHY", "AT_RISK", "CRITICAL"]
27
- """The previous line health status"""
39
+ """Current reputation of this phone line as assessed by risk-service.
40
+
41
+ - `HEALTHY` — No elevated risk detected.
42
+ - `AT_RISK` — Elevated risk indicators present; consider reducing send volume or
43
+ reviewing messaging patterns.
44
+ - `CRITICAL` — High risk; further sending may result in line flagging or
45
+ restriction.
46
+
47
+ Defaults to `HEALTHY` for lines that have not yet been scored.
48
+ """
49
+
50
+ previous_reputation: Literal["HEALTHY", "AT_RISK", "CRITICAL"]
51
+ """The previous line reputation"""
28
52
 
29
53
  previous_status: Literal["ACTIVE", "FLAGGED"]
30
54
  """The previous service status"""