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,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "ostruct"
4
+ require "json"
5
+
6
+ module Pinnacle
7
+ module Messages
8
+ module Types
9
+ class MessageReactionSchemaOptions
10
+ # @return [Boolean] By default, only messages sent with the `options.tracking` field can be
11
+ # precisely reacted to. <br>
12
+ # Set `options.force` to true to bypass this restriction (may react to a different
13
+ # message). <br>
14
+ # For MMS and RCS, only messages containing text can be tracked. Otherwise,
15
+ # `options.force` is ignored.
16
+ attr_reader :force
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 force [Boolean] By default, only messages sent with the `options.tracking` field can be
26
+ # precisely reacted to. <br>
27
+ # Set `options.force` to true to bypass this restriction (may react to a different
28
+ # message). <br>
29
+ # For MMS and RCS, only messages containing text can be tracked. Otherwise,
30
+ # `options.force` is ignored.
31
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
32
+ # @return [Pinnacle::Messages::Types::MessageReactionSchemaOptions]
33
+ def initialize(force: OMIT, additional_properties: nil)
34
+ @force = force if force != OMIT
35
+ @additional_properties = additional_properties
36
+ @_field_set = { "force": force }.reject do |_k, v|
37
+ v == OMIT
38
+ end
39
+ end
40
+
41
+ # Deserialize a JSON object to an instance of MessageReactionSchemaOptions
42
+ #
43
+ # @param json_object [String]
44
+ # @return [Pinnacle::Messages::Types::MessageReactionSchemaOptions]
45
+ def self.from_json(json_object:)
46
+ struct = JSON.parse(json_object, object_class: OpenStruct)
47
+ parsed_json = JSON.parse(json_object)
48
+ force = parsed_json["force"]
49
+ new(force: force, additional_properties: struct)
50
+ end
51
+
52
+ # Serialize an instance of MessageReactionSchemaOptions to a JSON object
53
+ #
54
+ # @return [String]
55
+ def to_json(*_args)
56
+ @_field_set&.to_json
57
+ end
58
+
59
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
60
+ # hash and check each fields type against the current object's property
61
+ # definitions.
62
+ #
63
+ # @param obj [Object]
64
+ # @return [Void]
65
+ def self.validate_raw(obj:)
66
+ obj.force&.is_a?(Boolean) != false || raise("Passed value for field obj.force is not the expected type, validation failed.")
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,179 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../../requests"
4
+ require_relative "../../types/messaging_profile_enum"
5
+ require_relative "../../types/attached_phone_number_result"
6
+ require_relative "../../types/detached_phone_number_result"
7
+ require "async"
8
+
9
+ module Pinnacle
10
+ module PhoneNumbers
11
+ class CampaignClient
12
+ # @return [Pinnacle::RequestClient]
13
+ attr_reader :request_client
14
+
15
+ # @param request_client [Pinnacle::RequestClient]
16
+ # @return [Pinnacle::PhoneNumbers::CampaignClient]
17
+ def initialize(request_client:)
18
+ @request_client = request_client
19
+ end
20
+
21
+ # Link a phone number to a specific campaign.
22
+ #
23
+ # @param phones [Array<String>] List of phone number (E.164 format).
24
+ # @param campaign_type [Pinnacle::Types::MessagingProfileEnum]
25
+ # @param campaign_id [Integer] Campaign's identifier.
26
+ # @param request_options [Pinnacle::RequestOptions]
27
+ # @return [Pinnacle::Types::AttachedPhoneNumberResult]
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.phone_numbers.campaign.attach(
35
+ # phones: ["+14155550123", "+14155559876", "+14155550111"],
36
+ # campaign_type: TOLL_FREE,
37
+ # campaign_id: 101
38
+ # )
39
+ def attach(phones:, campaign_type:, campaign_id:, request_options: nil)
40
+ response = @request_client.conn.post do |req|
41
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
42
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
43
+ req.headers = {
44
+ **(req.headers || {}),
45
+ **@request_client.get_headers,
46
+ **(request_options&.additional_headers || {})
47
+ }.compact
48
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
49
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
50
+ end
51
+ req.body = {
52
+ **(request_options&.additional_body_parameters || {}),
53
+ phones: phones,
54
+ campaignType: campaign_type,
55
+ campaignId: campaign_id
56
+ }.compact
57
+ req.url "#{@request_client.get_url(request_options: request_options)}/phone-numbers/attach-campaign"
58
+ end
59
+ Pinnacle::Types::AttachedPhoneNumberResult.from_json(json_object: response.body)
60
+ end
61
+
62
+ # Remove the association between a phone number and its attached campaign.
63
+ #
64
+ # @param phones [Array<String>] List of phone numbers (E.164 format).
65
+ # @param request_options [Pinnacle::RequestOptions]
66
+ # @return [Pinnacle::Types::DetachedPhoneNumberResult]
67
+ # @example
68
+ # api = Pinnacle::Client.new(
69
+ # base_url: "https://api.example.com",
70
+ # environment: Pinnacle::Environment::DEFAULT,
71
+ # api_key: "YOUR_API_KEY"
72
+ # )
73
+ # api.phone_numbers.campaign.detach(phones: ["+14155559876", "14155550111"])
74
+ def detach(phones:, request_options: nil)
75
+ response = @request_client.conn.delete do |req|
76
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
77
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
78
+ req.headers = {
79
+ **(req.headers || {}),
80
+ **@request_client.get_headers,
81
+ **(request_options&.additional_headers || {})
82
+ }.compact
83
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
84
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
85
+ end
86
+ req.body = { **(request_options&.additional_body_parameters || {}), phones: phones }.compact
87
+ req.url "#{@request_client.get_url(request_options: request_options)}/phone-numbers/detach-campaign"
88
+ end
89
+ Pinnacle::Types::DetachedPhoneNumberResult.from_json(json_object: response.body)
90
+ end
91
+ end
92
+
93
+ class AsyncCampaignClient
94
+ # @return [Pinnacle::AsyncRequestClient]
95
+ attr_reader :request_client
96
+
97
+ # @param request_client [Pinnacle::AsyncRequestClient]
98
+ # @return [Pinnacle::PhoneNumbers::AsyncCampaignClient]
99
+ def initialize(request_client:)
100
+ @request_client = request_client
101
+ end
102
+
103
+ # Link a phone number to a specific campaign.
104
+ #
105
+ # @param phones [Array<String>] List of phone number (E.164 format).
106
+ # @param campaign_type [Pinnacle::Types::MessagingProfileEnum]
107
+ # @param campaign_id [Integer] Campaign's identifier.
108
+ # @param request_options [Pinnacle::RequestOptions]
109
+ # @return [Pinnacle::Types::AttachedPhoneNumberResult]
110
+ # @example
111
+ # api = Pinnacle::Client.new(
112
+ # base_url: "https://api.example.com",
113
+ # environment: Pinnacle::Environment::DEFAULT,
114
+ # api_key: "YOUR_API_KEY"
115
+ # )
116
+ # api.phone_numbers.campaign.attach(
117
+ # phones: ["+14155550123", "+14155559876", "+14155550111"],
118
+ # campaign_type: TOLL_FREE,
119
+ # campaign_id: 101
120
+ # )
121
+ def attach(phones:, campaign_type:, campaign_id:, request_options: nil)
122
+ Async do
123
+ response = @request_client.conn.post do |req|
124
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
125
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
126
+ req.headers = {
127
+ **(req.headers || {}),
128
+ **@request_client.get_headers,
129
+ **(request_options&.additional_headers || {})
130
+ }.compact
131
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
132
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
133
+ end
134
+ req.body = {
135
+ **(request_options&.additional_body_parameters || {}),
136
+ phones: phones,
137
+ campaignType: campaign_type,
138
+ campaignId: campaign_id
139
+ }.compact
140
+ req.url "#{@request_client.get_url(request_options: request_options)}/phone-numbers/attach-campaign"
141
+ end
142
+ Pinnacle::Types::AttachedPhoneNumberResult.from_json(json_object: response.body)
143
+ end
144
+ end
145
+
146
+ # Remove the association between a phone number and its attached campaign.
147
+ #
148
+ # @param phones [Array<String>] List of phone numbers (E.164 format).
149
+ # @param request_options [Pinnacle::RequestOptions]
150
+ # @return [Pinnacle::Types::DetachedPhoneNumberResult]
151
+ # @example
152
+ # api = Pinnacle::Client.new(
153
+ # base_url: "https://api.example.com",
154
+ # environment: Pinnacle::Environment::DEFAULT,
155
+ # api_key: "YOUR_API_KEY"
156
+ # )
157
+ # api.phone_numbers.campaign.detach(phones: ["+14155559876", "14155550111"])
158
+ def detach(phones:, request_options: nil)
159
+ Async do
160
+ response = @request_client.conn.delete do |req|
161
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
162
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
163
+ req.headers = {
164
+ **(req.headers || {}),
165
+ **@request_client.get_headers,
166
+ **(request_options&.additional_headers || {})
167
+ }.compact
168
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
169
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
170
+ end
171
+ req.body = { **(request_options&.additional_body_parameters || {}), phones: phones }.compact
172
+ req.url "#{@request_client.get_url(request_options: request_options)}/phone-numbers/detach-campaign"
173
+ end
174
+ Pinnacle::Types::DetachedPhoneNumberResult.from_json(json_object: response.body)
175
+ end
176
+ end
177
+ end
178
+ end
179
+ end
@@ -0,0 +1,345 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../requests"
4
+ require_relative "../types/phone_feature_enum"
5
+ require_relative "types/search_schema_location"
6
+ require_relative "types/search_schema_number"
7
+ require_relative "types/search_schema_options"
8
+ require_relative "../types/phone_enum"
9
+ require_relative "../types/phone_number_details"
10
+ require "json"
11
+ require_relative "../types/purchased_number"
12
+ require_relative "types/phone_details_schema_level"
13
+ require_relative "types/phone_details_schema_options"
14
+ require_relative "types/phone_numbers_get_response"
15
+ require "async"
16
+
17
+ module Pinnacle
18
+ class PhoneNumbersClient
19
+ # @return [Pinnacle::RequestClient]
20
+ attr_reader :request_client
21
+
22
+ # @param request_client [Pinnacle::RequestClient]
23
+ # @return [Pinnacle::PhoneNumbersClient]
24
+ def initialize(request_client:)
25
+ @request_client = request_client
26
+ end
27
+
28
+ # Search for available phone numbers that match your exact criteria.
29
+ #
30
+ # @param features [Array<Pinnacle::Types::PhoneFeatureEnum>]
31
+ # @param location [Hash] Filter your search by geographic location to find numbers in specific regions.
32
+ # <br>
33
+ # Toll-free numbers ignore city and state filters.Request of type Pinnacle::PhoneNumbers::Types::SearchSchemaLocation, as a Hash
34
+ # * :city (String)
35
+ # * :country_code (String)
36
+ # * :national_destination_code (String)
37
+ # * :state (String)
38
+ # @param phone_number_digit_filters [Hash] Filter your search by digit pattern.Request of type Pinnacle::PhoneNumbers::Types::SearchSchemaNumber, as a Hash
39
+ # * :contains (String)
40
+ # * :ends_with (String)
41
+ # * :starts_with (String)
42
+ # @param options [Hash] Extra search settings to control how many results you get.Request of type Pinnacle::PhoneNumbers::Types::SearchSchemaOptions, as a Hash
43
+ # * :limit (Integer)
44
+ # @param type [Array<Pinnacle::Types::PhoneEnum>] Types of phone numbers to return in your search.
45
+ # @param request_options [Pinnacle::RequestOptions]
46
+ # @return [Array<Pinnacle::Types::PhoneNumberDetails>]
47
+ # @example
48
+ # api = Pinnacle::Client.new(
49
+ # base_url: "https://api.example.com",
50
+ # environment: Pinnacle::Environment::DEFAULT,
51
+ # api_key: "YOUR_API_KEY"
52
+ # )
53
+ # api.phone_numbers.search(
54
+ # features: [SMS, MMS],
55
+ # location: { city: "New York", national_destination_code: "212" },
56
+ # phone_number_digit_filters: { contains: "514", starts_with: "45" },
57
+ # options: { limit: 4 },
58
+ # type: [LOCAL]
59
+ # )
60
+ def search(type:, features: nil, location: nil, phone_number_digit_filters: nil, options: nil, request_options: nil)
61
+ response = @request_client.conn.post do |req|
62
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
63
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
64
+ req.headers = {
65
+ **(req.headers || {}),
66
+ **@request_client.get_headers,
67
+ **(request_options&.additional_headers || {})
68
+ }.compact
69
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
70
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
71
+ end
72
+ req.body = {
73
+ **(request_options&.additional_body_parameters || {}),
74
+ features: features,
75
+ location: location,
76
+ number: phone_number_digit_filters,
77
+ options: options,
78
+ type: type
79
+ }.compact
80
+ req.url "#{@request_client.get_url(request_options: request_options)}/phone-numbers/search"
81
+ end
82
+ parsed_json = JSON.parse(response.body)
83
+ parsed_json&.map do |item|
84
+ item = item.to_json
85
+ Pinnacle::Types::PhoneNumberDetails.from_json(json_object: item)
86
+ end
87
+ end
88
+
89
+ # Purchase one or more phone numbers found through the [search
90
+ # endpoint](./search). <br>
91
+ # Billing uses your account credits and the numbers are ready for immediate use.
92
+ #
93
+ # @param numbers [Array<String>] List of phone numbers you want to purchase, each in international E.164 format.
94
+ # <br>
95
+ # All specified numbers must be currently available and will be validated for
96
+ # availability before processing the purchase. <br>
97
+ # If any number in the request is unavailable or invalid, no purchases will be
98
+ # made and the request will be voided.
99
+ # @param request_options [Pinnacle::RequestOptions]
100
+ # @return [Array<Pinnacle::Types::PurchasedNumber>]
101
+ # @example
102
+ # api = Pinnacle::Client.new(
103
+ # base_url: "https://api.example.com",
104
+ # environment: Pinnacle::Environment::DEFAULT,
105
+ # api_key: "YOUR_API_KEY"
106
+ # )
107
+ # api.phone_numbers.buy(numbers: ["+18559491727"])
108
+ def buy(numbers:, request_options: nil)
109
+ response = @request_client.conn.post do |req|
110
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
111
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
112
+ req.headers = {
113
+ **(req.headers || {}),
114
+ **@request_client.get_headers,
115
+ **(request_options&.additional_headers || {})
116
+ }.compact
117
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
118
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
119
+ end
120
+ req.body = { **(request_options&.additional_body_parameters || {}), numbers: numbers }.compact
121
+ req.url "#{@request_client.get_url(request_options: request_options)}/phone-numbers/buy"
122
+ end
123
+ parsed_json = JSON.parse(response.body)
124
+ parsed_json&.map do |item|
125
+ item = item.to_json
126
+ Pinnacle::Types::PurchasedNumber.from_json(json_object: item)
127
+ end
128
+ end
129
+
130
+ # Retrieve information about any phone number.
131
+ #
132
+ # @param phone [String] Phone number you want to analyze in E.164 format.
133
+ # @param level [Pinnacle::PhoneNumbers::Types::PhoneDetailsSchemaLevel] Choose how much detail you want in your results:
134
+ # - `basic`: Receive essential info like carrier, location, and format.
135
+ # - `advanced`: Receive a deeper analysis including fraud risk, detailed location,
136
+ # and enhanced contact info.
137
+ # @param options [Hash] Customize your lookup with additional options.Request of type Pinnacle::PhoneNumbers::Types::PhoneDetailsSchemaOptions, as a Hash
138
+ # * :force (Boolean)
139
+ # * :risk (Boolean)
140
+ # * :enhanced_contact_info (Hash)
141
+ # * :context (String)
142
+ # @param request_options [Pinnacle::RequestOptions]
143
+ # @return [Pinnacle::Types::BasicPhoneInformation, Pinnacle::Types::AdvancedPhoneInformation]
144
+ # @example
145
+ # api = Pinnacle::Client.new(
146
+ # base_url: "https://api.example.com",
147
+ # environment: Pinnacle::Environment::DEFAULT,
148
+ # api_key: "YOUR_API_KEY"
149
+ # )
150
+ # api.phone_numbers.get(
151
+ # phone: "+11234567890",
152
+ # level: ADVANCED,
153
+ # options: { risk: true, enhanced_contact_info: { context: "This is my friend from JZ. He has done a lot in the crypto space." } }
154
+ # )
155
+ def get(phone:, level:, options: nil, request_options: nil)
156
+ response = @request_client.conn.post do |req|
157
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
158
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
159
+ req.headers = {
160
+ **(req.headers || {}),
161
+ **@request_client.get_headers,
162
+ **(request_options&.additional_headers || {})
163
+ }.compact
164
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
165
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
166
+ end
167
+ req.body = {
168
+ **(request_options&.additional_body_parameters || {}),
169
+ phone: phone,
170
+ level: level,
171
+ options: options
172
+ }.compact
173
+ req.url "#{@request_client.get_url(request_options: request_options)}/phone-numbers/details"
174
+ end
175
+ Pinnacle::PhoneNumbers::Types::PhoneNumbersGetResponse.from_json(json_object: response.body)
176
+ end
177
+ end
178
+
179
+ class AsyncPhoneNumbersClient
180
+ # @return [Pinnacle::AsyncRequestClient]
181
+ attr_reader :request_client
182
+
183
+ # @param request_client [Pinnacle::AsyncRequestClient]
184
+ # @return [Pinnacle::AsyncPhoneNumbersClient]
185
+ def initialize(request_client:)
186
+ @request_client = request_client
187
+ end
188
+
189
+ # Search for available phone numbers that match your exact criteria.
190
+ #
191
+ # @param features [Array<Pinnacle::Types::PhoneFeatureEnum>]
192
+ # @param location [Hash] Filter your search by geographic location to find numbers in specific regions.
193
+ # <br>
194
+ # Toll-free numbers ignore city and state filters.Request of type Pinnacle::PhoneNumbers::Types::SearchSchemaLocation, as a Hash
195
+ # * :city (String)
196
+ # * :country_code (String)
197
+ # * :national_destination_code (String)
198
+ # * :state (String)
199
+ # @param phone_number_digit_filters [Hash] Filter your search by digit pattern.Request of type Pinnacle::PhoneNumbers::Types::SearchSchemaNumber, as a Hash
200
+ # * :contains (String)
201
+ # * :ends_with (String)
202
+ # * :starts_with (String)
203
+ # @param options [Hash] Extra search settings to control how many results you get.Request of type Pinnacle::PhoneNumbers::Types::SearchSchemaOptions, as a Hash
204
+ # * :limit (Integer)
205
+ # @param type [Array<Pinnacle::Types::PhoneEnum>] Types of phone numbers to return in your search.
206
+ # @param request_options [Pinnacle::RequestOptions]
207
+ # @return [Array<Pinnacle::Types::PhoneNumberDetails>]
208
+ # @example
209
+ # api = Pinnacle::Client.new(
210
+ # base_url: "https://api.example.com",
211
+ # environment: Pinnacle::Environment::DEFAULT,
212
+ # api_key: "YOUR_API_KEY"
213
+ # )
214
+ # api.phone_numbers.search(
215
+ # features: [SMS, MMS],
216
+ # location: { city: "New York", national_destination_code: "212" },
217
+ # phone_number_digit_filters: { contains: "514", starts_with: "45" },
218
+ # options: { limit: 4 },
219
+ # type: [LOCAL]
220
+ # )
221
+ def search(type:, features: nil, location: nil, phone_number_digit_filters: nil, options: nil, request_options: nil)
222
+ Async do
223
+ response = @request_client.conn.post do |req|
224
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
225
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
226
+ req.headers = {
227
+ **(req.headers || {}),
228
+ **@request_client.get_headers,
229
+ **(request_options&.additional_headers || {})
230
+ }.compact
231
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
232
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
233
+ end
234
+ req.body = {
235
+ **(request_options&.additional_body_parameters || {}),
236
+ features: features,
237
+ location: location,
238
+ number: phone_number_digit_filters,
239
+ options: options,
240
+ type: type
241
+ }.compact
242
+ req.url "#{@request_client.get_url(request_options: request_options)}/phone-numbers/search"
243
+ end
244
+ parsed_json = JSON.parse(response.body)
245
+ parsed_json&.map do |item|
246
+ item = item.to_json
247
+ Pinnacle::Types::PhoneNumberDetails.from_json(json_object: item)
248
+ end
249
+ end
250
+ end
251
+
252
+ # Purchase one or more phone numbers found through the [search
253
+ # endpoint](./search). <br>
254
+ # Billing uses your account credits and the numbers are ready for immediate use.
255
+ #
256
+ # @param numbers [Array<String>] List of phone numbers you want to purchase, each in international E.164 format.
257
+ # <br>
258
+ # All specified numbers must be currently available and will be validated for
259
+ # availability before processing the purchase. <br>
260
+ # If any number in the request is unavailable or invalid, no purchases will be
261
+ # made and the request will be voided.
262
+ # @param request_options [Pinnacle::RequestOptions]
263
+ # @return [Array<Pinnacle::Types::PurchasedNumber>]
264
+ # @example
265
+ # api = Pinnacle::Client.new(
266
+ # base_url: "https://api.example.com",
267
+ # environment: Pinnacle::Environment::DEFAULT,
268
+ # api_key: "YOUR_API_KEY"
269
+ # )
270
+ # api.phone_numbers.buy(numbers: ["+18559491727"])
271
+ def buy(numbers:, request_options: nil)
272
+ Async do
273
+ response = @request_client.conn.post do |req|
274
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
275
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
276
+ req.headers = {
277
+ **(req.headers || {}),
278
+ **@request_client.get_headers,
279
+ **(request_options&.additional_headers || {})
280
+ }.compact
281
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
282
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
283
+ end
284
+ req.body = { **(request_options&.additional_body_parameters || {}), numbers: numbers }.compact
285
+ req.url "#{@request_client.get_url(request_options: request_options)}/phone-numbers/buy"
286
+ end
287
+ parsed_json = JSON.parse(response.body)
288
+ parsed_json&.map do |item|
289
+ item = item.to_json
290
+ Pinnacle::Types::PurchasedNumber.from_json(json_object: item)
291
+ end
292
+ end
293
+ end
294
+
295
+ # Retrieve information about any phone number.
296
+ #
297
+ # @param phone [String] Phone number you want to analyze in E.164 format.
298
+ # @param level [Pinnacle::PhoneNumbers::Types::PhoneDetailsSchemaLevel] Choose how much detail you want in your results:
299
+ # - `basic`: Receive essential info like carrier, location, and format.
300
+ # - `advanced`: Receive a deeper analysis including fraud risk, detailed location,
301
+ # and enhanced contact info.
302
+ # @param options [Hash] Customize your lookup with additional options.Request of type Pinnacle::PhoneNumbers::Types::PhoneDetailsSchemaOptions, as a Hash
303
+ # * :force (Boolean)
304
+ # * :risk (Boolean)
305
+ # * :enhanced_contact_info (Hash)
306
+ # * :context (String)
307
+ # @param request_options [Pinnacle::RequestOptions]
308
+ # @return [Pinnacle::Types::BasicPhoneInformation, Pinnacle::Types::AdvancedPhoneInformation]
309
+ # @example
310
+ # api = Pinnacle::Client.new(
311
+ # base_url: "https://api.example.com",
312
+ # environment: Pinnacle::Environment::DEFAULT,
313
+ # api_key: "YOUR_API_KEY"
314
+ # )
315
+ # api.phone_numbers.get(
316
+ # phone: "+11234567890",
317
+ # level: ADVANCED,
318
+ # options: { risk: true, enhanced_contact_info: { context: "This is my friend from JZ. He has done a lot in the crypto space." } }
319
+ # )
320
+ def get(phone:, level:, options: nil, request_options: nil)
321
+ Async do
322
+ response = @request_client.conn.post do |req|
323
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
324
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
325
+ req.headers = {
326
+ **(req.headers || {}),
327
+ **@request_client.get_headers,
328
+ **(request_options&.additional_headers || {})
329
+ }.compact
330
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
331
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
332
+ end
333
+ req.body = {
334
+ **(request_options&.additional_body_parameters || {}),
335
+ phone: phone,
336
+ level: level,
337
+ options: options
338
+ }.compact
339
+ req.url "#{@request_client.get_url(request_options: request_options)}/phone-numbers/details"
340
+ end
341
+ Pinnacle::PhoneNumbers::Types::PhoneNumbersGetResponse.from_json(json_object: response.body)
342
+ end
343
+ end
344
+ end
345
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module PhoneNumbers
5
+ module Types
6
+ # Choose how much detail you want in your results:
7
+ # - `basic`: Receive essential info like carrier, location, and format.
8
+ # - `advanced`: Receive a deeper analysis including fraud risk, detailed location,
9
+ # and enhanced contact info.
10
+ class PhoneDetailsSchemaLevel
11
+ BASIC = "basic"
12
+ ADVANCED = "advanced"
13
+ end
14
+ end
15
+ end
16
+ end