rcs 1.0.17 → 2.0.0.pre.rc.1

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 (321) hide show
  1. checksums.yaml +4 -4
  2. data/lib/environment.rb +1 -1
  3. data/lib/rcs/brands/client.rb +631 -0
  4. data/lib/rcs/brands/types/autofill_brand_schema_options.rb +61 -0
  5. data/lib/rcs/brands/types/brand_contact.rb +84 -0
  6. data/lib/rcs/campaigns/client.rb +44 -0
  7. data/lib/rcs/campaigns/dlc/client.rb +480 -0
  8. data/lib/rcs/campaigns/dlc/types/upsert_dlc_schema_keywords.rb +99 -0
  9. data/lib/rcs/campaigns/dlc/types/upsert_dlc_schema_keywords_help.rb +74 -0
  10. data/lib/rcs/campaigns/dlc/types/upsert_dlc_schema_keywords_opt_in.rb +74 -0
  11. data/lib/rcs/campaigns/dlc/types/upsert_dlc_schema_keywords_opt_out.rb +74 -0
  12. data/lib/rcs/campaigns/dlc/types/upsert_dlc_schema_links.rb +74 -0
  13. data/lib/rcs/campaigns/dlc/types/upsert_dlc_schema_options.rb +110 -0
  14. data/lib/rcs/campaigns/dlc/types/upsert_dlc_schema_use_case.rb +76 -0
  15. data/lib/rcs/campaigns/rcs/client.rb +457 -0
  16. data/lib/rcs/campaigns/rcs/types/rcs_autofill_response.rb +155 -0
  17. data/lib/rcs/campaigns/rcs/types/upsert_rcs_schema_agent.rb +140 -0
  18. data/lib/rcs/campaigns/rcs/types/upsert_rcs_schema_agent_emails_item.rb +73 -0
  19. data/lib/rcs/campaigns/rcs/types/upsert_rcs_schema_agent_phones_item.rb +73 -0
  20. data/lib/rcs/campaigns/rcs/types/upsert_rcs_schema_agent_websites_item.rb +73 -0
  21. data/lib/rcs/campaigns/rcs/types/upsert_rcs_schema_links.rb +74 -0
  22. data/lib/rcs/campaigns/rcs/types/upsert_rcs_schema_opt_in.rb +75 -0
  23. data/lib/rcs/campaigns/rcs/types/upsert_rcs_schema_opt_out.rb +76 -0
  24. data/lib/rcs/campaigns/rcs/types/upsert_rcs_schema_use_case.rb +75 -0
  25. data/lib/rcs/campaigns/toll_free/client.rb +429 -0
  26. data/lib/rcs/campaigns/toll_free/types/toll_free_autofill_response.rb +130 -0
  27. data/lib/rcs/campaigns/toll_free/types/upsert_toll_free_schema_opt_in.rb +86 -0
  28. data/lib/rcs/campaigns/toll_free/types/upsert_toll_free_schema_use_case.rb +75 -0
  29. data/lib/rcs/contacts/client.rb +275 -0
  30. data/lib/rcs/conversations/client.rb +273 -0
  31. data/lib/rcs/message/client.rb +30 -0
  32. data/lib/rcs/message/sms/client.rb +96 -0
  33. data/lib/rcs/messages/client.rb +185 -0
  34. data/lib/rcs/messages/mms/client.rb +98 -0
  35. data/lib/rcs/messages/rcs/client.rb +94 -0
  36. data/lib/rcs/messages/send/client.rb +318 -0
  37. data/lib/rcs/messages/send/types/send_mms_response.rb +60 -0
  38. data/lib/rcs/messages/send/types/send_mms_schema_options.rb +108 -0
  39. data/lib/rcs/messages/send/types/send_rcs_response.rb +60 -0
  40. data/lib/rcs/messages/send/types/send_sms_response.rb +60 -0
  41. data/lib/rcs/messages/send/types/send_sms_schema_options.rb +81 -0
  42. data/lib/rcs/messages/types/message_reaction_schema_options.rb +71 -0
  43. data/lib/rcs/phone_numbers/campaign/client.rb +179 -0
  44. data/lib/rcs/phone_numbers/client.rb +345 -0
  45. data/lib/rcs/phone_numbers/types/phone_details_schema_level.rb +16 -0
  46. data/lib/rcs/phone_numbers/types/phone_details_schema_options.rb +93 -0
  47. data/lib/rcs/phone_numbers/types/phone_details_schema_options_enhanced_contact_info.rb +64 -0
  48. data/lib/rcs/phone_numbers/types/phone_numbers_get_response.rb +58 -0
  49. data/lib/rcs/phone_numbers/types/search_schema_location.rb +96 -0
  50. data/lib/rcs/phone_numbers/types/search_schema_number.rb +81 -0
  51. data/lib/rcs/phone_numbers/types/search_schema_options.rb +62 -0
  52. data/lib/rcs/phone_numbers/webhook/client.rb +191 -0
  53. data/lib/rcs/status/client.rb +30 -0
  54. data/lib/rcs/status/get/client.rb +367 -0
  55. data/lib/rcs/tools/client.rb +32 -199
  56. data/lib/rcs/tools/contact_card/client.rb +285 -0
  57. data/lib/rcs/tools/contact_card/types/get_v_card_schema_options.rb +67 -0
  58. data/lib/rcs/tools/file/client.rb +138 -0
  59. data/lib/rcs/tools/file/types/file_upload_schema_options.rb +70 -0
  60. data/lib/rcs/tools/file/types/file_upload_schema_options_download.rb +66 -0
  61. data/lib/rcs/tools/url/client.rb +245 -0
  62. data/lib/rcs/types/advanced_phone_information.rb +147 -0
  63. data/lib/rcs/types/advanced_phone_information_carrier.rb +90 -0
  64. data/lib/rcs/types/advanced_phone_information_contact.rb +146 -0
  65. data/lib/rcs/types/advanced_phone_information_location.rb +142 -0
  66. data/lib/rcs/types/advanced_phone_information_location_coordinates.rb +73 -0
  67. data/lib/rcs/types/advanced_phone_information_location_country.rb +77 -0
  68. data/lib/rcs/types/advanced_phone_information_type.rb +97 -0
  69. data/lib/rcs/types/advanced_phone_information_type_recommendation.rb +15 -0
  70. data/lib/rcs/types/agent.rb +68 -0
  71. data/lib/rcs/types/attach_webhook_params.rb +60 -0
  72. data/lib/rcs/types/attach_webhook_response_webhook.rb +86 -0
  73. data/lib/rcs/types/attach_webhook_schema_name.rb +88 -0
  74. data/lib/rcs/types/attach_webhook_schema_webhook_id.rb +77 -0
  75. data/lib/rcs/types/attached_phone_number_result.rb +75 -0
  76. data/lib/rcs/types/autofill_campaign_params.rb +69 -0
  77. data/lib/rcs/types/autofill_dlc_campaign_response.rb +169 -0
  78. data/lib/rcs/types/autofill_dlc_response_keywords.rb +95 -0
  79. data/lib/rcs/types/autofill_dlc_response_keywords_help.rb +70 -0
  80. data/lib/rcs/{send/types/send_sms_response.rb → types/autofill_dlc_response_keywords_opt_in.rb} +18 -17
  81. data/lib/rcs/types/autofill_dlc_response_keywords_opt_out.rb +70 -0
  82. data/lib/rcs/types/autofill_dlc_response_links.rb +70 -0
  83. data/lib/rcs/types/autofill_dlc_response_options.rb +106 -0
  84. data/lib/rcs/types/autofill_dlc_response_use_case.rb +72 -0
  85. data/lib/rcs/types/bad_request_error_body.rb +44 -45
  86. data/lib/rcs/types/basic_phone_information.rb +127 -0
  87. data/lib/rcs/{company/types/company_register_response_brand.rb → types/basic_phone_information_contact.rb} +12 -21
  88. data/lib/rcs/types/basic_phone_information_location.rb +74 -0
  89. data/lib/rcs/types/basic_phone_information_location_country.rb +75 -0
  90. data/lib/rcs/types/brand_status.rb +92 -0
  91. data/lib/rcs/types/brand_status_enum.rb +21 -0
  92. data/lib/rcs/types/buy_response_capabilities.rb +77 -0
  93. data/lib/rcs/types/campaign_enum.rb +15 -0
  94. data/lib/rcs/types/campaign_query.rb +69 -0
  95. data/lib/rcs/{company/types/company_register_request_company_id.rb → types/campaign_submission_result.rb} +15 -16
  96. data/lib/rcs/types/campaign_validation_response_errors_item.rb +76 -0
  97. data/lib/rcs/types/campaign_validation_result.rb +71 -0
  98. data/lib/rcs/types/click_action.rb +73 -0
  99. data/lib/rcs/types/click_action_data.rb +56 -0
  100. data/lib/rcs/types/click_action_data_metadata.rb +69 -0
  101. data/lib/rcs/types/company_sector_enum.rb +26 -0
  102. data/lib/rcs/types/company_type_enum.rb +14 -0
  103. data/lib/rcs/types/configured_webhook.rb +85 -0
  104. data/lib/rcs/types/contact.rb +105 -0
  105. data/lib/rcs/types/contact_id.rb +57 -0
  106. data/lib/rcs/types/conversation.rb +146 -0
  107. data/lib/rcs/types/conversation_contact.rb +68 -0
  108. data/lib/rcs/types/conversation_list.rb +79 -0
  109. data/lib/rcs/types/conversation_sender.rb +60 -0
  110. data/lib/rcs/types/create_url_options.rb +61 -0
  111. data/lib/rcs/types/detached_phone_number_result.rb +75 -0
  112. data/lib/rcs/types/detached_webhook_info.rb +74 -0
  113. data/lib/rcs/types/detailed_phone_number_enum.rb +25 -0
  114. data/lib/rcs/types/dlc_assignment_status_enum.rb +19 -0
  115. data/lib/rcs/types/dlc_campaign_status.rb +107 -0
  116. data/lib/rcs/types/dlc_campaign_use_case_enum.rb +35 -0
  117. data/lib/rcs/types/dlc_campaign_with_extended_brand_and_status.rb +194 -0
  118. data/lib/rcs/types/dlc_with_extended_brand_and_status_keywords.rb +94 -0
  119. data/lib/rcs/types/dlc_with_extended_brand_and_status_keywords_help.rb +72 -0
  120. data/lib/rcs/{send/types/send_mms_response.rb → types/dlc_with_extended_brand_and_status_keywords_opt_in.rb} +20 -17
  121. data/lib/rcs/{send/types/send_rcs_response.rb → types/dlc_with_extended_brand_and_status_keywords_opt_out.rb} +20 -17
  122. data/lib/rcs/types/dlc_with_extended_brand_and_status_links.rb +70 -0
  123. data/lib/rcs/types/dlc_with_extended_brand_and_status_options.rb +106 -0
  124. data/lib/rcs/types/dlc_with_extended_brand_and_status_use_case.rb +72 -0
  125. data/lib/rcs/types/enhanced_contact.rb +9 -0
  126. data/lib/rcs/types/enhanced_contact_item.rb +104 -0
  127. data/lib/rcs/types/error.rb +61 -0
  128. data/lib/rcs/types/extended_brand.rb +194 -0
  129. data/lib/rcs/types/extended_brand_with_vetting.rb +226 -0
  130. data/lib/rcs/types/extended_rcs_campaign.rb +173 -0
  131. data/lib/rcs/{company/types/company_register_request.rb → types/get_conversation_params.rb} +13 -12
  132. data/lib/rcs/types/get_conversation_request_id.rb +58 -0
  133. data/lib/rcs/types/get_conversation_request_recipient.rb +72 -0
  134. data/lib/rcs/types/get_dlc_campaign_status_response_updates.rb +96 -0
  135. data/lib/rcs/types/get_toll_free_campaign_status_response_updates.rb +92 -0
  136. data/lib/rcs/types/inbound_button.rb +56 -0
  137. data/lib/rcs/types/link_click_event.rb +465 -0
  138. data/lib/rcs/{company/types/company_update_response.rb → types/location_share_action.rb} +19 -19
  139. data/lib/rcs/types/location_share_action_data.rb +89 -0
  140. data/lib/rcs/types/message.rb +174 -0
  141. data/lib/rcs/types/message_content.rb +85 -0
  142. data/lib/rcs/types/message_method_enum.rb +12 -0
  143. data/lib/rcs/types/message_protocol_enum.rb +12 -0
  144. data/lib/rcs/types/message_schedule.rb +94 -0
  145. data/lib/rcs/types/message_status_enum.rb +16 -0
  146. data/lib/rcs/types/message_volume_enum.rb +20 -0
  147. data/lib/rcs/types/messaging_profile_enum.rb +11 -0
  148. data/lib/rcs/types/mms_content.rb +74 -0
  149. data/lib/rcs/types/mms_validation_response_segments.rb +85 -0
  150. data/lib/rcs/types/mms_validation_response_segments_value_item.rb +75 -0
  151. data/lib/rcs/types/mms_validation_result.rb +82 -0
  152. data/lib/rcs/types/nullable_contact.rb +84 -0
  153. data/lib/rcs/types/number_format.rb +79 -0
  154. data/lib/rcs/types/opt_in_method_enum.rb +13 -0
  155. data/lib/rcs/types/optional_brand_info.rb +145 -0
  156. data/lib/rcs/types/optional_contact.rb +83 -0
  157. data/lib/rcs/types/optional_contacts.rb +84 -0
  158. data/lib/rcs/types/phone.rb +101 -0
  159. data/lib/rcs/types/phone_capabilities.rb +75 -0
  160. data/lib/rcs/types/phone_enum.rb +13 -0
  161. data/lib/rcs/types/phone_feature_enum.rb +18 -0
  162. data/lib/rcs/types/phone_number_campaign_attach_failed_item.rb +67 -0
  163. data/lib/rcs/types/phone_number_campaign_attach_phone_numbers_item.rb +75 -0
  164. data/lib/rcs/types/phone_number_campaign_attach_phone_numbers_item_campaign.rb +78 -0
  165. data/lib/rcs/types/phone_number_campaign_detach_failed_item.rb +67 -0
  166. data/lib/rcs/types/phone_number_campaign_detach_phone_numbers_item.rb +75 -0
  167. data/lib/rcs/types/phone_number_campaign_detach_phone_numbers_item_campaign.rb +78 -0
  168. data/lib/rcs/types/phone_number_cost.rb +75 -0
  169. data/lib/rcs/types/phone_number_details.rb +110 -0
  170. data/lib/rcs/types/phone_number_enum.rb +18 -0
  171. data/lib/rcs/types/phone_number_region.rb +91 -0
  172. data/lib/rcs/types/phone_number_status.rb +90 -0
  173. data/lib/rcs/types/phone_number_status_enum.rb +16 -0
  174. data/lib/rcs/types/pinnacle_file_upload_metadata.rb +84 -0
  175. data/lib/rcs/types/pinnacle_url_config.rb +71 -0
  176. data/lib/rcs/types/profile_status_enum.rb +17 -0
  177. data/lib/rcs/types/purchased_number.rb +75 -0
  178. data/lib/rcs/types/rcs.rb +70 -0
  179. data/lib/rcs/types/rcs_base.rb +82 -0
  180. data/lib/rcs/types/rcs_base_options.rb +100 -0
  181. data/lib/rcs/types/rcs_button_call.rb +68 -0
  182. data/lib/rcs/types/rcs_button_content.rb +148 -0
  183. data/lib/rcs/types/rcs_button_open_url.rb +68 -0
  184. data/lib/rcs/types/rcs_button_request_user_location.rb +58 -0
  185. data/lib/rcs/types/rcs_button_schedule_event.rb +98 -0
  186. data/lib/rcs/types/rcs_button_send_location.rb +74 -0
  187. data/lib/rcs/types/rcs_button_send_location_lat_long.rb +68 -0
  188. data/lib/rcs/types/rcs_button_trigger.rb +78 -0
  189. data/lib/rcs/types/rcs_campaign.rb +143 -0
  190. data/lib/rcs/types/rcs_campaign_opt_in_method_enum.rb +15 -0
  191. data/lib/rcs/types/rcs_campaign_schema_agent.rb +134 -0
  192. data/lib/rcs/types/rcs_campaign_schema_agent_emails_item.rb +69 -0
  193. data/lib/rcs/types/rcs_campaign_schema_agent_phones_item.rb +69 -0
  194. data/lib/rcs/types/rcs_campaign_schema_agent_websites_item.rb +69 -0
  195. data/lib/rcs/types/rcs_campaign_schema_extra_agent.rb +134 -0
  196. data/lib/rcs/types/rcs_campaign_schema_extra_agent_emails_item.rb +70 -0
  197. data/lib/rcs/types/rcs_campaign_schema_extra_agent_phones_item.rb +70 -0
  198. data/lib/rcs/types/rcs_campaign_schema_extra_agent_websites_item.rb +71 -0
  199. data/lib/rcs/types/rcs_campaign_schema_extra_links.rb +70 -0
  200. data/lib/rcs/types/rcs_campaign_schema_extra_opt_in.rb +71 -0
  201. data/lib/rcs/types/rcs_campaign_schema_extra_opt_out.rb +70 -0
  202. data/lib/rcs/types/rcs_campaign_schema_extra_use_case.rb +71 -0
  203. data/lib/rcs/types/rcs_campaign_schema_links.rb +70 -0
  204. data/lib/rcs/types/rcs_campaign_schema_opt_in.rb +71 -0
  205. data/lib/rcs/types/rcs_campaign_schema_opt_out.rb +70 -0
  206. data/lib/rcs/types/rcs_campaign_schema_use_case.rb +71 -0
  207. data/lib/rcs/types/rcs_campaign_status.rb +86 -0
  208. data/lib/rcs/types/rcs_campaign_use_case_enum.rb +23 -0
  209. data/lib/rcs/types/rcs_card.rb +110 -0
  210. data/lib/rcs/types/rcs_cards.rb +79 -0
  211. data/lib/rcs/types/rcs_cards_cards_item.rb +88 -0
  212. data/lib/rcs/types/rcs_cards_content.rb +79 -0
  213. data/lib/rcs/types/rcs_cards_content_cards_item.rb +94 -0
  214. data/lib/rcs/types/rcs_content.rb +72 -0
  215. data/lib/rcs/types/rcs_media.rb +110 -0
  216. data/lib/rcs/types/rcs_media_content.rb +81 -0
  217. data/lib/rcs/types/rcs_media_details_content.rb +77 -0
  218. data/lib/rcs/types/rcs_text.rb +106 -0
  219. data/lib/rcs/types/rcs_text_content.rb +72 -0
  220. data/lib/rcs/types/rcs_validate_content.rb +70 -0
  221. data/lib/rcs/{company/types/company_register_response.rb → types/rcs_validate_content_media.rb} +19 -21
  222. data/lib/rcs/types/rcs_validation_result.rb +76 -0
  223. data/lib/rcs/types/reaction_result.rb +67 -0
  224. data/lib/rcs/types/scheduled_messaage.rb +73 -0
  225. data/lib/rcs/types/scheduled_send_response_config.rb +89 -0
  226. data/lib/rcs/types/send_sms_response_segments.rb +69 -0
  227. data/lib/rcs/types/send_sms_response_segments_encoding.rb +11 -0
  228. data/lib/rcs/types/sent_mms_details.rb +102 -0
  229. data/lib/rcs/types/sent_rcs_details.rb +105 -0
  230. data/lib/rcs/types/sent_sms_details.rb +108 -0
  231. data/lib/rcs/types/shortened_url.rb +77 -0
  232. data/lib/rcs/types/shortened_url_with_click_data.rb +90 -0
  233. data/lib/rcs/types/sms_content.rb +58 -0
  234. data/lib/rcs/types/sms_validation_response_segments.rb +80 -0
  235. data/lib/rcs/types/sms_validation_response_segments_gsm_7.rb +75 -0
  236. data/lib/rcs/types/sms_validation_response_segments_utf_16.rb +68 -0
  237. data/lib/rcs/types/sms_validation_response_total.rb +75 -0
  238. data/lib/rcs/types/sms_validation_result.rb +102 -0
  239. data/lib/rcs/types/sub_use_case_enum.rb +19 -0
  240. data/lib/rcs/types/submission_results.rb +57 -0
  241. data/lib/rcs/types/successful_conversation_update.rb +58 -0
  242. data/lib/rcs/types/toll_free_campaign.rb +118 -0
  243. data/lib/rcs/types/toll_free_campaign_schema_opt_in.rb +78 -0
  244. data/lib/rcs/types/toll_free_campaign_schema_use_case.rb +71 -0
  245. data/lib/rcs/types/toll_free_campaign_status.rb +91 -0
  246. data/lib/rcs/types/toll_free_campaign_use_case_enum.rb +52 -0
  247. data/lib/rcs/types/toll_free_campaign_with_extended_brand_and_status.rb +155 -0
  248. data/lib/rcs/types/toll_free_status_enum.rb +20 -0
  249. data/lib/rcs/types/tracking.rb +17 -0
  250. data/lib/rcs/types/updated_contact_id.rb +57 -0
  251. data/lib/rcs/types/upload_results.rb +80 -0
  252. data/lib/rcs/types/v_card_address_schema_type_item.rb +15 -0
  253. data/lib/rcs/types/v_card_data.rb +237 -0
  254. data/lib/rcs/types/v_card_data_file.rb +74 -0
  255. data/lib/rcs/types/v_card_data_file_metadata.rb +62 -0
  256. data/lib/rcs/types/v_card_email_schema_type_item.rb +21 -0
  257. data/lib/rcs/types/v_card_geo.rb +70 -0
  258. data/lib/rcs/types/v_card_name.rb +98 -0
  259. data/lib/rcs/types/v_card_organization.rb +70 -0
  260. data/lib/rcs/types/v_card_phone_schema_type_item.rb +21 -0
  261. data/lib/rcs/types/validate_campaign_params.rb +69 -0
  262. data/lib/rcs/types/validation_error_details.rb +76 -0
  263. data/lib/rcs/types/validation_results.rb +71 -0
  264. data/lib/rcs/types/vcard.rb +215 -0
  265. data/lib/rcs/types/vcard_address.rb +130 -0
  266. data/lib/rcs/types/vcard_content.rb +223 -0
  267. data/lib/rcs/types/vcard_email.rb +70 -0
  268. data/lib/rcs/types/vcard_phone.rb +70 -0
  269. data/lib/rcs/types/vcard_resource.rb +71 -0
  270. data/lib/rcs/types/vetting_feedback.rb +81 -0
  271. data/lib/rcs/types/vetting_history.rb +98 -0
  272. data/lib/rcs/types/vetting_history_vetting_status.rb +13 -0
  273. data/lib/rcs/types/vetting_results.rb +57 -0
  274. data/lib/rcs/types/webhook_event_enum.rb +13 -0
  275. data/lib/rcs/types/webhook_result.rb +64 -0
  276. data/lib/rcs/{company/types/company_update_response_brand.rb → types/webhooks.rb} +25 -17
  277. data/lib/rcs/types/zod_error.rb +73 -0
  278. data/lib/rcs/webhooks/client.rb +93 -0
  279. data/lib/rcs.rb +67 -83
  280. data/lib/requests.rb +4 -4
  281. data/lib/types_export.rb +252 -46
  282. metadata +278 -52
  283. data/lib/rcs/company/client.rb +0 -375
  284. data/lib/rcs/company/types/company_register_request_company.rb +0 -128
  285. data/lib/rcs/send/client.rb +0 -382
  286. data/lib/rcs/send/types/rcs_fallback.rb +0 -84
  287. data/lib/rcs/tools/types/tools_shorten_url_response.rb +0 -70
  288. data/lib/rcs/tools/types/tools_upload_url_response.rb +0 -69
  289. data/lib/rcs/types/action.rb +0 -154
  290. data/lib/rcs/types/action_lat_long.rb +0 -68
  291. data/lib/rcs/types/action_type.rb +0 -16
  292. data/lib/rcs/types/additional_email.rb +0 -65
  293. data/lib/rcs/types/additional_phone_number.rb +0 -65
  294. data/lib/rcs/types/additional_website.rb +0 -65
  295. data/lib/rcs/types/card.rb +0 -90
  296. data/lib/rcs/types/company.rb +0 -319
  297. data/lib/rcs/types/company_additional_emails_item.rb +0 -67
  298. data/lib/rcs/types/company_additional_phone_numbers_item.rb +0 -67
  299. data/lib/rcs/types/company_additional_websites_item.rb +0 -67
  300. data/lib/rcs/types/company_category.rb +0 -20
  301. data/lib/rcs/types/company_contact.rb +0 -117
  302. data/lib/rcs/types/company_details.rb +0 -120
  303. data/lib/rcs/types/forbidden_error_body.rb +0 -57
  304. data/lib/rcs/types/inbound_action_message.rb +0 -117
  305. data/lib/rcs/types/inbound_location_message.rb +0 -106
  306. data/lib/rcs/types/inbound_location_message_coordinates.rb +0 -65
  307. data/lib/rcs/types/inbound_media_message.rb +0 -112
  308. data/lib/rcs/types/inbound_message.rb +0 -88
  309. data/lib/rcs/types/inbound_message_message_type.rb +0 -10
  310. data/lib/rcs/types/inbound_message_metadata.rb +0 -79
  311. data/lib/rcs/types/inbound_text_message.rb +0 -100
  312. data/lib/rcs/types/internal_server_error_body.rb +0 -57
  313. data/lib/rcs/types/media_payload.rb +0 -65
  314. data/lib/rcs/types/message_metadata.rb +0 -56
  315. data/lib/rcs/types/messaging.rb +0 -95
  316. data/lib/rcs/types/optionals.rb +0 -99
  317. data/lib/rcs/types/payment_required_error_body.rb +0 -57
  318. data/lib/rcs/types/point_of_contact.rb +0 -72
  319. data/lib/rcs/types/rcs_functionalities.rb +0 -117
  320. data/lib/rcs/types/sender_metadata.rb +0 -74
  321. data/lib/rcs/types/unauthorized_error_body.rb +0 -57
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../../types/toll_free_campaign_use_case_enum"
4
+ require "ostruct"
5
+ require "json"
6
+
7
+ module Pinnacle
8
+ module Campaigns
9
+ module TollFree
10
+ module Types
11
+ # Use case classification for the campaign.
12
+ class UpsertTollFreeSchemaUseCase
13
+ # @return [String] Summary of the use case.
14
+ attr_reader :summary
15
+ # @return [Pinnacle::Types::TollFreeCampaignUseCaseEnum]
16
+ attr_reader :value
17
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
18
+ attr_reader :additional_properties
19
+ # @return [Object]
20
+ attr_reader :_field_set
21
+ protected :_field_set
22
+
23
+ OMIT = Object.new
24
+
25
+ # @param summary [String] Summary of the use case.
26
+ # @param value [Pinnacle::Types::TollFreeCampaignUseCaseEnum]
27
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
28
+ # @return [Pinnacle::Campaigns::TollFree::Types::UpsertTollFreeSchemaUseCase]
29
+ def initialize(summary: OMIT, value: OMIT, additional_properties: nil)
30
+ @summary = summary if summary != OMIT
31
+ @value = value if value != OMIT
32
+ @additional_properties = additional_properties
33
+ @_field_set = { "summary": summary, "value": value }.reject do |_k, v|
34
+ v == OMIT
35
+ end
36
+ end
37
+
38
+ # Deserialize a JSON object to an instance of UpsertTollFreeSchemaUseCase
39
+ #
40
+ # @param json_object [String]
41
+ # @return [Pinnacle::Campaigns::TollFree::Types::UpsertTollFreeSchemaUseCase]
42
+ def self.from_json(json_object:)
43
+ struct = JSON.parse(json_object, object_class: OpenStruct)
44
+ parsed_json = JSON.parse(json_object)
45
+ summary = parsed_json["summary"]
46
+ value = parsed_json["value"]
47
+ new(
48
+ summary: summary,
49
+ value: value,
50
+ additional_properties: struct
51
+ )
52
+ end
53
+
54
+ # Serialize an instance of UpsertTollFreeSchemaUseCase to a JSON object
55
+ #
56
+ # @return [String]
57
+ def to_json(*_args)
58
+ @_field_set&.to_json
59
+ end
60
+
61
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
62
+ # hash and check each fields type against the current object's property
63
+ # definitions.
64
+ #
65
+ # @param obj [Object]
66
+ # @return [Void]
67
+ def self.validate_raw(obj:)
68
+ obj.summary&.is_a?(String) != false || raise("Passed value for field obj.summary is not the expected type, validation failed.")
69
+ obj.value&.is_a?(Pinnacle::Types::TollFreeCampaignUseCaseEnum) != false || raise("Passed value for field obj.value is not the expected type, validation failed.")
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
@@ -0,0 +1,275 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../requests"
4
+ require_relative "../types/contact"
5
+ require_relative "../types/contact_id"
6
+ require_relative "../types/updated_contact_id"
7
+ require "async"
8
+
9
+ module Pinnacle
10
+ class ContactsClient
11
+ # @return [Pinnacle::RequestClient]
12
+ attr_reader :request_client
13
+
14
+ # @param request_client [Pinnacle::RequestClient]
15
+ # @return [Pinnacle::ContactsClient]
16
+ def initialize(request_client:)
17
+ @request_client = request_client
18
+ end
19
+
20
+ # Retrieve contact information for a given number.
21
+ #
22
+ # @param id [Integer] Unique identifier of a specific contact you want to retrieve. <br>
23
+ # Either this parameter or `phoneNumber` must be provided, but not both.
24
+ # @param phone_number [String] Phone number you want to look up contact information for, provided in
25
+ # URL-encoded E.164 format with %2B prefix instead of +.
26
+ # @param request_options [Pinnacle::RequestOptions]
27
+ # @return [Pinnacle::Types::Contact]
28
+ # @example
29
+ # api = Pinnacle::Client.new(
30
+ # base_url: "https://api.example.com",
31
+ # environment: Pinnacle::Environment::DEFAULT,
32
+ # api_key: "YOUR_API_KEY"
33
+ # )
34
+ # api.contacts.get
35
+ def get(id: nil, phone_number: nil, request_options: nil)
36
+ response = @request_client.conn.get do |req|
37
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
38
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
39
+ req.headers = {
40
+ **(req.headers || {}),
41
+ **@request_client.get_headers,
42
+ **(request_options&.additional_headers || {})
43
+ }.compact
44
+ req.params = {
45
+ **(request_options&.additional_query_parameters || {}),
46
+ "id": id,
47
+ "phoneNumber": phone_number
48
+ }.compact
49
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
50
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
51
+ end
52
+ req.url "#{@request_client.get_url(request_options: request_options)}/contacts"
53
+ end
54
+ Pinnacle::Types::Contact.from_json(json_object: response.body)
55
+ end
56
+
57
+ # Create a new contact for a given phone number.
58
+ #
59
+ # @param description [String] New notes or details for your contact.
60
+ # @param email [String] New email address for your contact.
61
+ # @param name [String] New name for your contact.
62
+ # @param tags [Array<String>] New tags for your contact.
63
+ # @param phone_number [String] Phone number to save for your contact, in E.164 format.
64
+ # @param request_options [Pinnacle::RequestOptions]
65
+ # @return [Pinnacle::Types::ContactId]
66
+ # @example
67
+ # api = Pinnacle::Client.new(
68
+ # base_url: "https://api.example.com",
69
+ # environment: Pinnacle::Environment::DEFAULT,
70
+ # api_key: "YOUR_API_KEY"
71
+ # )
72
+ # api.contacts.create(phone_number: "phoneNumber")
73
+ def create(phone_number:, description: nil, email: nil, name: nil, tags: nil, request_options: nil)
74
+ response = @request_client.conn.post do |req|
75
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
76
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
77
+ req.headers = {
78
+ **(req.headers || {}),
79
+ **@request_client.get_headers,
80
+ **(request_options&.additional_headers || {})
81
+ }.compact
82
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
83
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
84
+ end
85
+ req.body = {
86
+ **(request_options&.additional_body_parameters || {}),
87
+ description: description,
88
+ email: email,
89
+ name: name,
90
+ tags: tags,
91
+ phoneNumber: phone_number
92
+ }.compact
93
+ req.url "#{@request_client.get_url(request_options: request_options)}/contacts"
94
+ end
95
+ Pinnacle::Types::ContactId.from_json(json_object: response.body)
96
+ end
97
+
98
+ # Update an existing contact.
99
+ #
100
+ # @param description [String] New notes or details for your contact.
101
+ # @param email [String] New email address for your contact.
102
+ # @param name [String] New name for your contact.
103
+ # @param tags [Array<String>] New tags for your contact.
104
+ # @param id [Integer] ID of the contact you want to update.
105
+ # @param request_options [Pinnacle::RequestOptions]
106
+ # @return [Pinnacle::Types::UpdatedContactId]
107
+ # @example
108
+ # api = Pinnacle::Client.new(
109
+ # base_url: "https://api.example.com",
110
+ # environment: Pinnacle::Environment::DEFAULT,
111
+ # api_key: "YOUR_API_KEY"
112
+ # )
113
+ # api.contacts.update(id: 137)
114
+ def update(id:, description: nil, email: nil, name: nil, tags: nil, request_options: nil)
115
+ response = @request_client.conn.put do |req|
116
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
117
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
118
+ req.headers = {
119
+ **(req.headers || {}),
120
+ **@request_client.get_headers,
121
+ **(request_options&.additional_headers || {})
122
+ }.compact
123
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
124
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
125
+ end
126
+ req.body = {
127
+ **(request_options&.additional_body_parameters || {}),
128
+ description: description,
129
+ email: email,
130
+ name: name,
131
+ tags: tags,
132
+ id: id
133
+ }.compact
134
+ req.url "#{@request_client.get_url(request_options: request_options)}/contacts"
135
+ end
136
+ Pinnacle::Types::UpdatedContactId.from_json(json_object: response.body)
137
+ end
138
+ end
139
+
140
+ class AsyncContactsClient
141
+ # @return [Pinnacle::AsyncRequestClient]
142
+ attr_reader :request_client
143
+
144
+ # @param request_client [Pinnacle::AsyncRequestClient]
145
+ # @return [Pinnacle::AsyncContactsClient]
146
+ def initialize(request_client:)
147
+ @request_client = request_client
148
+ end
149
+
150
+ # Retrieve contact information for a given number.
151
+ #
152
+ # @param id [Integer] Unique identifier of a specific contact you want to retrieve. <br>
153
+ # Either this parameter or `phoneNumber` must be provided, but not both.
154
+ # @param phone_number [String] Phone number you want to look up contact information for, provided in
155
+ # URL-encoded E.164 format with %2B prefix instead of +.
156
+ # @param request_options [Pinnacle::RequestOptions]
157
+ # @return [Pinnacle::Types::Contact]
158
+ # @example
159
+ # api = Pinnacle::Client.new(
160
+ # base_url: "https://api.example.com",
161
+ # environment: Pinnacle::Environment::DEFAULT,
162
+ # api_key: "YOUR_API_KEY"
163
+ # )
164
+ # api.contacts.get
165
+ def get(id: nil, phone_number: nil, request_options: nil)
166
+ Async do
167
+ response = @request_client.conn.get do |req|
168
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
169
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
170
+ req.headers = {
171
+ **(req.headers || {}),
172
+ **@request_client.get_headers,
173
+ **(request_options&.additional_headers || {})
174
+ }.compact
175
+ req.params = {
176
+ **(request_options&.additional_query_parameters || {}),
177
+ "id": id,
178
+ "phoneNumber": phone_number
179
+ }.compact
180
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
181
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
182
+ end
183
+ req.url "#{@request_client.get_url(request_options: request_options)}/contacts"
184
+ end
185
+ Pinnacle::Types::Contact.from_json(json_object: response.body)
186
+ end
187
+ end
188
+
189
+ # Create a new contact for a given phone number.
190
+ #
191
+ # @param description [String] New notes or details for your contact.
192
+ # @param email [String] New email address for your contact.
193
+ # @param name [String] New name for your contact.
194
+ # @param tags [Array<String>] New tags for your contact.
195
+ # @param phone_number [String] Phone number to save for your contact, in E.164 format.
196
+ # @param request_options [Pinnacle::RequestOptions]
197
+ # @return [Pinnacle::Types::ContactId]
198
+ # @example
199
+ # api = Pinnacle::Client.new(
200
+ # base_url: "https://api.example.com",
201
+ # environment: Pinnacle::Environment::DEFAULT,
202
+ # api_key: "YOUR_API_KEY"
203
+ # )
204
+ # api.contacts.create(phone_number: "phoneNumber")
205
+ def create(phone_number:, description: nil, email: nil, name: nil, tags: nil, request_options: nil)
206
+ Async do
207
+ response = @request_client.conn.post do |req|
208
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
209
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
210
+ req.headers = {
211
+ **(req.headers || {}),
212
+ **@request_client.get_headers,
213
+ **(request_options&.additional_headers || {})
214
+ }.compact
215
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
216
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
217
+ end
218
+ req.body = {
219
+ **(request_options&.additional_body_parameters || {}),
220
+ description: description,
221
+ email: email,
222
+ name: name,
223
+ tags: tags,
224
+ phoneNumber: phone_number
225
+ }.compact
226
+ req.url "#{@request_client.get_url(request_options: request_options)}/contacts"
227
+ end
228
+ Pinnacle::Types::ContactId.from_json(json_object: response.body)
229
+ end
230
+ end
231
+
232
+ # Update an existing contact.
233
+ #
234
+ # @param description [String] New notes or details for your contact.
235
+ # @param email [String] New email address for your contact.
236
+ # @param name [String] New name for your contact.
237
+ # @param tags [Array<String>] New tags for your contact.
238
+ # @param id [Integer] ID of the contact you want to update.
239
+ # @param request_options [Pinnacle::RequestOptions]
240
+ # @return [Pinnacle::Types::UpdatedContactId]
241
+ # @example
242
+ # api = Pinnacle::Client.new(
243
+ # base_url: "https://api.example.com",
244
+ # environment: Pinnacle::Environment::DEFAULT,
245
+ # api_key: "YOUR_API_KEY"
246
+ # )
247
+ # api.contacts.update(id: 137)
248
+ def update(id:, description: nil, email: nil, name: nil, tags: nil, request_options: nil)
249
+ Async do
250
+ response = @request_client.conn.put do |req|
251
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
252
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
253
+ req.headers = {
254
+ **(req.headers || {}),
255
+ **@request_client.get_headers,
256
+ **(request_options&.additional_headers || {})
257
+ }.compact
258
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
259
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
260
+ end
261
+ req.body = {
262
+ **(request_options&.additional_body_parameters || {}),
263
+ description: description,
264
+ email: email,
265
+ name: name,
266
+ tags: tags,
267
+ id: id
268
+ }.compact
269
+ req.url "#{@request_client.get_url(request_options: request_options)}/contacts"
270
+ end
271
+ Pinnacle::Types::UpdatedContactId.from_json(json_object: response.body)
272
+ end
273
+ end
274
+ end
275
+ end
@@ -0,0 +1,273 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../requests"
4
+ require_relative "../types/get_conversation_params"
5
+ require_relative "../types/conversation"
6
+ require_relative "../types/campaign_enum"
7
+ require_relative "../types/conversation_list"
8
+ require_relative "../types/successful_conversation_update"
9
+ require "async"
10
+
11
+ module Pinnacle
12
+ class ConversationsClient
13
+ # @return [Pinnacle::RequestClient]
14
+ attr_reader :request_client
15
+
16
+ # @param request_client [Pinnacle::RequestClient]
17
+ # @return [Pinnacle::ConversationsClient]
18
+ def initialize(request_client:)
19
+ @request_client = request_client
20
+ end
21
+
22
+ # Fetch a specific conversation using either its unique identifier or by matching
23
+ # sender and recipient details.
24
+ #
25
+ # @param request [Pinnacle::Types::GetConversationRequestId, Pinnacle::Types::GetConversationRequestRecipient]
26
+ # @param request_options [Pinnacle::RequestOptions]
27
+ # @return [Pinnacle::Types::Conversation]
28
+ # @example
29
+ # api = Pinnacle::Client.new(
30
+ # base_url: "https://api.example.com",
31
+ # environment: Pinnacle::Environment::DEFAULT,
32
+ # api_key: "YOUR_API_KEY"
33
+ # )
34
+ # api.conversations.get(request: { id: 1 })
35
+ def get(request:, request_options: nil)
36
+ response = @request_client.conn.post do |req|
37
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
38
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
39
+ req.headers = {
40
+ **(req.headers || {}),
41
+ **@request_client.get_headers,
42
+ **(request_options&.additional_headers || {})
43
+ }.compact
44
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
45
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
46
+ end
47
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
48
+ req.url "#{@request_client.get_url(request_options: request_options)}/conversations/get"
49
+ end
50
+ Pinnacle::Types::Conversation.from_json(json_object: response.body)
51
+ end
52
+
53
+ # Retrieves conversations by page with optional filtering based off provided
54
+ # parameters.
55
+ #
56
+ # @param brand_id [Integer] The unique identifier of the brand to filter conversations.
57
+ # @param campaign_id [Integer] The unique identifier of the campaign to filter conversations.
58
+ # @param campaign_type [Pinnacle::Types::CampaignEnum]
59
+ # @param page_index [Integer] Zero-based index for pagination.
60
+ # @param page_size [Integer] Number of conversations to return per page.
61
+ # @param receiver [String] Receiver's phone number in E.164 format.
62
+ # @param sender [String]
63
+ # @param request_options [Pinnacle::RequestOptions]
64
+ # @return [Pinnacle::Types::ConversationList]
65
+ # @example
66
+ # api = Pinnacle::Client.new(
67
+ # base_url: "https://api.example.com",
68
+ # environment: Pinnacle::Environment::DEFAULT,
69
+ # api_key: "YOUR_API_KEY"
70
+ # )
71
+ # api.conversations.list(
72
+ # brand_id: 101,
73
+ # campaign_id: 136,
74
+ # campaign_type: TOLL_FREE,
75
+ # page_index: 0,
76
+ # page_size: 20,
77
+ # receiver: "+16509231662",
78
+ # sender: "+18445551234"
79
+ # )
80
+ def list(page_index:, brand_id: nil, campaign_id: nil, campaign_type: nil, page_size: nil, receiver: nil,
81
+ sender: nil, request_options: nil)
82
+ response = @request_client.conn.post do |req|
83
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
84
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
85
+ req.headers = {
86
+ **(req.headers || {}),
87
+ **@request_client.get_headers,
88
+ **(request_options&.additional_headers || {})
89
+ }.compact
90
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
91
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
92
+ end
93
+ req.body = {
94
+ **(request_options&.additional_body_parameters || {}),
95
+ brandId: brand_id,
96
+ campaignId: campaign_id,
97
+ campaignType: campaign_type,
98
+ pageIndex: page_index,
99
+ pageSize: page_size,
100
+ receiver: receiver,
101
+ sender: sender
102
+ }.compact
103
+ req.url "#{@request_client.get_url(request_options: request_options)}/conversations/list"
104
+ end
105
+ Pinnacle::Types::ConversationList.from_json(json_object: response.body)
106
+ end
107
+
108
+ # Update the notes associated with a specific conversation.
109
+ #
110
+ # @param id [Integer] The unique identifier of the conversation to update.
111
+ # @param notes [String] New notes or comments for the conversation.
112
+ # @param request_options [Pinnacle::RequestOptions]
113
+ # @return [Pinnacle::Types::SuccessfulConversationUpdate]
114
+ # @example
115
+ # api = Pinnacle::Client.new(
116
+ # base_url: "https://api.example.com",
117
+ # environment: Pinnacle::Environment::DEFAULT,
118
+ # api_key: "YOUR_API_KEY"
119
+ # )
120
+ # api.conversations.update(id: 123, notes: "Follow-up completed. Customer satisfied with resolution.")
121
+ def update(id:, notes:, request_options: nil)
122
+ response = @request_client.conn.post do |req|
123
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
124
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
125
+ req.headers = {
126
+ **(req.headers || {}),
127
+ **@request_client.get_headers,
128
+ **(request_options&.additional_headers || {})
129
+ }.compact
130
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
131
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
132
+ end
133
+ req.body = { **(request_options&.additional_body_parameters || {}), id: id, notes: notes }.compact
134
+ req.url "#{@request_client.get_url(request_options: request_options)}/conversations/update"
135
+ end
136
+ Pinnacle::Types::SuccessfulConversationUpdate.from_json(json_object: response.body)
137
+ end
138
+ end
139
+
140
+ class AsyncConversationsClient
141
+ # @return [Pinnacle::AsyncRequestClient]
142
+ attr_reader :request_client
143
+
144
+ # @param request_client [Pinnacle::AsyncRequestClient]
145
+ # @return [Pinnacle::AsyncConversationsClient]
146
+ def initialize(request_client:)
147
+ @request_client = request_client
148
+ end
149
+
150
+ # Fetch a specific conversation using either its unique identifier or by matching
151
+ # sender and recipient details.
152
+ #
153
+ # @param request [Pinnacle::Types::GetConversationRequestId, Pinnacle::Types::GetConversationRequestRecipient]
154
+ # @param request_options [Pinnacle::RequestOptions]
155
+ # @return [Pinnacle::Types::Conversation]
156
+ # @example
157
+ # api = Pinnacle::Client.new(
158
+ # base_url: "https://api.example.com",
159
+ # environment: Pinnacle::Environment::DEFAULT,
160
+ # api_key: "YOUR_API_KEY"
161
+ # )
162
+ # api.conversations.get(request: { id: 1 })
163
+ def get(request:, request_options: nil)
164
+ Async do
165
+ response = @request_client.conn.post do |req|
166
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
167
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
168
+ req.headers = {
169
+ **(req.headers || {}),
170
+ **@request_client.get_headers,
171
+ **(request_options&.additional_headers || {})
172
+ }.compact
173
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
174
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
175
+ end
176
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
177
+ req.url "#{@request_client.get_url(request_options: request_options)}/conversations/get"
178
+ end
179
+ Pinnacle::Types::Conversation.from_json(json_object: response.body)
180
+ end
181
+ end
182
+
183
+ # Retrieves conversations by page with optional filtering based off provided
184
+ # parameters.
185
+ #
186
+ # @param brand_id [Integer] The unique identifier of the brand to filter conversations.
187
+ # @param campaign_id [Integer] The unique identifier of the campaign to filter conversations.
188
+ # @param campaign_type [Pinnacle::Types::CampaignEnum]
189
+ # @param page_index [Integer] Zero-based index for pagination.
190
+ # @param page_size [Integer] Number of conversations to return per page.
191
+ # @param receiver [String] Receiver's phone number in E.164 format.
192
+ # @param sender [String]
193
+ # @param request_options [Pinnacle::RequestOptions]
194
+ # @return [Pinnacle::Types::ConversationList]
195
+ # @example
196
+ # api = Pinnacle::Client.new(
197
+ # base_url: "https://api.example.com",
198
+ # environment: Pinnacle::Environment::DEFAULT,
199
+ # api_key: "YOUR_API_KEY"
200
+ # )
201
+ # api.conversations.list(
202
+ # brand_id: 101,
203
+ # campaign_id: 136,
204
+ # campaign_type: TOLL_FREE,
205
+ # page_index: 0,
206
+ # page_size: 20,
207
+ # receiver: "+16509231662",
208
+ # sender: "+18445551234"
209
+ # )
210
+ def list(page_index:, brand_id: nil, campaign_id: nil, campaign_type: nil, page_size: nil, receiver: nil,
211
+ sender: nil, request_options: nil)
212
+ Async do
213
+ response = @request_client.conn.post do |req|
214
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
215
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
216
+ req.headers = {
217
+ **(req.headers || {}),
218
+ **@request_client.get_headers,
219
+ **(request_options&.additional_headers || {})
220
+ }.compact
221
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
222
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
223
+ end
224
+ req.body = {
225
+ **(request_options&.additional_body_parameters || {}),
226
+ brandId: brand_id,
227
+ campaignId: campaign_id,
228
+ campaignType: campaign_type,
229
+ pageIndex: page_index,
230
+ pageSize: page_size,
231
+ receiver: receiver,
232
+ sender: sender
233
+ }.compact
234
+ req.url "#{@request_client.get_url(request_options: request_options)}/conversations/list"
235
+ end
236
+ Pinnacle::Types::ConversationList.from_json(json_object: response.body)
237
+ end
238
+ end
239
+
240
+ # Update the notes associated with a specific conversation.
241
+ #
242
+ # @param id [Integer] The unique identifier of the conversation to update.
243
+ # @param notes [String] New notes or comments for the conversation.
244
+ # @param request_options [Pinnacle::RequestOptions]
245
+ # @return [Pinnacle::Types::SuccessfulConversationUpdate]
246
+ # @example
247
+ # api = Pinnacle::Client.new(
248
+ # base_url: "https://api.example.com",
249
+ # environment: Pinnacle::Environment::DEFAULT,
250
+ # api_key: "YOUR_API_KEY"
251
+ # )
252
+ # api.conversations.update(id: 123, notes: "Follow-up completed. Customer satisfied with resolution.")
253
+ def update(id:, notes:, request_options: nil)
254
+ Async do
255
+ response = @request_client.conn.post do |req|
256
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
257
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
258
+ req.headers = {
259
+ **(req.headers || {}),
260
+ **@request_client.get_headers,
261
+ **(request_options&.additional_headers || {})
262
+ }.compact
263
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
264
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
265
+ end
266
+ req.body = { **(request_options&.additional_body_parameters || {}), id: id, notes: notes }.compact
267
+ req.url "#{@request_client.get_url(request_options: request_options)}/conversations/update"
268
+ end
269
+ Pinnacle::Types::SuccessfulConversationUpdate.from_json(json_object: response.body)
270
+ end
271
+ end
272
+ end
273
+ end
@@ -0,0 +1,30 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../requests"
4
+ require_relative "sms/client"
5
+
6
+ module Pinnacle
7
+ module Message
8
+ class Client
9
+ # @return [Pinnacle::Message::SmsClient]
10
+ attr_reader :sms
11
+
12
+ # @param request_client [Pinnacle::RequestClient]
13
+ # @return [Pinnacle::Message::Client]
14
+ def initialize(request_client:)
15
+ @sms = Pinnacle::Message::SmsClient.new(request_client: request_client)
16
+ end
17
+ end
18
+
19
+ class AsyncClient
20
+ # @return [Pinnacle::Message::AsyncSmsClient]
21
+ attr_reader :sms
22
+
23
+ # @param request_client [Pinnacle::AsyncRequestClient]
24
+ # @return [Pinnacle::Message::AsyncClient]
25
+ def initialize(request_client:)
26
+ @sms = Pinnacle::Message::AsyncSmsClient.new(request_client: request_client)
27
+ end
28
+ end
29
+ end
30
+ end