rcs 2.0.0.pre.rc.5 → 2.0.0

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 (114) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rcs/brands/client.rb +36 -24
  3. data/lib/rcs/campaigns/dlc/client.rb +36 -26
  4. data/lib/rcs/campaigns/rcs/client.rb +26 -22
  5. data/lib/rcs/campaigns/rcs/types/rcs_autofill_response.rb +6 -6
  6. data/lib/rcs/campaigns/toll_free/client.rb +32 -26
  7. data/lib/rcs/campaigns/toll_free/types/toll_free_autofill_response.rb +6 -6
  8. data/lib/rcs/contacts/client.rb +10 -8
  9. data/lib/rcs/conversations/client.rb +144 -16
  10. data/lib/rcs/conversations/types/conversations_list_messages_request_direction.rb +12 -0
  11. data/lib/rcs/conversations/types/conversations_list_messages_request_sort_order.rb +12 -0
  12. data/lib/rcs/conversations/types/conversations_list_messages_request_status.rb +17 -0
  13. data/lib/rcs/conversations/types/conversations_list_messages_request_type.rb +13 -0
  14. data/lib/rcs/messages/client.rb +12 -29
  15. data/lib/rcs/messages/rcs/client.rb +1 -1
  16. data/lib/rcs/phone_numbers/campaign/client.rb +20 -6
  17. data/lib/rcs/phone_numbers/client.rb +0 -14
  18. data/lib/rcs/phone_numbers/webhook/client.rb +12 -10
  19. data/lib/rcs/rcs/client.rb +32 -18
  20. data/lib/rcs/status/get/client.rb +32 -16
  21. data/lib/rcs/tools/contact_card/client.rb +18 -8
  22. data/lib/rcs/tools/file/client.rb +92 -2
  23. data/lib/rcs/tools/file/types/upload_file_options.rb +21 -3
  24. data/lib/rcs/tools/url/client.rb +4 -2
  25. data/lib/rcs/types/attach_webhook_by_id_params.rb +5 -5
  26. data/lib/rcs/types/attach_webhook_response_webhook.rb +5 -3
  27. data/lib/rcs/types/autofill_campaign_params.rb +15 -3
  28. data/lib/rcs/types/autofill_dlc_campaign_response.rb +10 -6
  29. data/lib/rcs/types/autofill_dlc_response_keywords.rb +8 -10
  30. data/lib/rcs/types/autofill_dlc_response_keywords_help.rb +3 -3
  31. data/lib/rcs/types/autofill_dlc_response_keywords_opt_in.rb +6 -4
  32. data/lib/rcs/types/autofill_dlc_response_keywords_opt_out.rb +3 -3
  33. data/lib/rcs/types/autofill_dlc_response_options.rb +12 -12
  34. data/lib/rcs/types/brand_status.rb +5 -3
  35. data/lib/rcs/types/{inbound_button.rb → button_clicked.rb} +7 -7
  36. data/lib/rcs/types/button_clicked_data.rb +80 -0
  37. data/lib/rcs/types/button_clicked_data_button.rb +118 -0
  38. data/lib/rcs/types/{click_action_data.rb → button_clicked_data_button_raw.rb} +10 -8
  39. data/lib/rcs/types/button_clicked_data_button_type.rb +15 -0
  40. data/lib/rcs/types/campaign_query.rb +10 -2
  41. data/lib/rcs/types/contact.rb +5 -3
  42. data/lib/rcs/types/contact_id.rb +5 -3
  43. data/lib/rcs/types/conversation.rb +16 -8
  44. data/lib/rcs/types/conversation_by_id_params.rb +7 -3
  45. data/lib/rcs/types/conversation_contact.rb +5 -3
  46. data/lib/rcs/types/conversation_list.rb +50 -28
  47. data/lib/rcs/types/create_url_options.rb +4 -2
  48. data/lib/rcs/types/detached_webhook_info.rb +5 -3
  49. data/lib/rcs/types/dlc_campaign_status.rb +5 -3
  50. data/lib/rcs/types/dlc_campaign_with_extended_brand_and_status.rb +21 -19
  51. data/lib/rcs/types/dlc_with_extended_brand_and_status_keywords_help.rb +3 -3
  52. data/lib/rcs/types/dlc_with_extended_brand_and_status_keywords_opt_in.rb +6 -4
  53. data/lib/rcs/types/dlc_with_extended_brand_and_status_keywords_opt_out.rb +6 -4
  54. data/lib/rcs/types/extended_brand.rb +25 -13
  55. data/lib/rcs/types/extended_brand_with_vetting.rb +25 -13
  56. data/lib/rcs/types/extended_rcs_campaign.rb +25 -14
  57. data/lib/rcs/types/link_click_event.rb +1 -17
  58. data/lib/rcs/types/message.rb +5 -3
  59. data/lib/rcs/types/message_content.rb +4 -4
  60. data/lib/rcs/types/message_event.rb +143 -0
  61. data/lib/rcs/types/message_event_content.rb +127 -0
  62. data/lib/rcs/types/message_event_conversation.rb +82 -0
  63. data/lib/rcs/types/message_event_direction.rb +11 -0
  64. data/lib/rcs/types/message_event_mms_content.rb +94 -0
  65. data/lib/rcs/types/message_event_rcs_button_data.rb +104 -0
  66. data/lib/rcs/types/message_event_rcs_cards_content.rb +99 -0
  67. data/lib/rcs/types/message_event_rcs_cards_content_cards_item.rb +94 -0
  68. data/lib/rcs/types/message_event_rcs_location_data.rb +91 -0
  69. data/lib/rcs/types/message_event_rcs_media_content.rb +94 -0
  70. data/lib/rcs/types/message_event_rcs_text_content.rb +92 -0
  71. data/lib/rcs/types/message_event_sms_content.rb +81 -0
  72. data/lib/rcs/types/{retrieved_conversations.rb → message_list.rb} +26 -25
  73. data/lib/rcs/types/message_with_reaction.rb +197 -0
  74. data/lib/rcs/types/message_with_reaction_direction.rb +11 -0
  75. data/lib/rcs/types/{error_response.rb → not_found_error_body.rb} +7 -7
  76. data/lib/rcs/types/phone_number_campaign_attach_phone_numbers_item_campaign.rb +7 -3
  77. data/lib/rcs/types/phone_number_campaign_detach_phone_numbers_item_campaign.rb +7 -3
  78. data/lib/rcs/types/pinnacle_file_upload_metadata.rb +18 -2
  79. data/lib/rcs/types/profile_status_enum.rb +4 -4
  80. data/lib/rcs/types/rcs_base_options.rb +12 -1
  81. data/lib/rcs/types/rcs_button_call.rb +11 -2
  82. data/lib/rcs/types/rcs_button_open_url.rb +11 -2
  83. data/lib/rcs/types/rcs_button_request_user_location.rb +15 -3
  84. data/lib/rcs/types/rcs_button_schedule_event.rb +9 -1
  85. data/lib/rcs/types/rcs_button_send_location.rb +11 -2
  86. data/lib/rcs/types/rcs_button_trigger.rb +8 -6
  87. data/lib/rcs/types/rcs_campaign.rb +3 -3
  88. data/lib/rcs/types/rcs_campaign_schema_extra_agent.rb +8 -8
  89. data/lib/rcs/types/rcs_campaign_status.rb +5 -3
  90. data/lib/rcs/types/reaction_result.rb +10 -6
  91. data/lib/rcs/types/refreshed_file.rb +67 -0
  92. data/lib/rcs/types/{rcs.rb → rich_message.rb} +3 -3
  93. data/lib/rcs/types/scheduled_messaage.rb +5 -3
  94. data/lib/rcs/types/sent_mms_details.rb +4 -2
  95. data/lib/rcs/types/sent_rcs_details.rb +12 -13
  96. data/lib/rcs/types/sent_sms_details.rb +5 -3
  97. data/lib/rcs/types/toll_free_campaign.rb +3 -3
  98. data/lib/rcs/types/toll_free_campaign_status.rb +5 -3
  99. data/lib/rcs/types/toll_free_campaign_with_extended_brand_and_status.rb +3 -5
  100. data/lib/rcs/types/updated_contact_id.rb +5 -3
  101. data/lib/rcs/types/user_event.rb +83 -0
  102. data/lib/rcs/types/user_event_conversation.rb +78 -0
  103. data/lib/rcs/types/v_card_data.rb +5 -3
  104. data/lib/rcs/types/validate_campaign_params.rb +15 -3
  105. data/lib/rcs/types/vcard.rb +5 -3
  106. data/lib/rcs/types/vcard_content.rb +5 -3
  107. data/lib/rcs/types/vcard_resource.rb +5 -3
  108. data/lib/rcs/types/webhook_event_enum.rb +1 -0
  109. data/lib/rcs/types/webhooks.rb +5 -3
  110. data/lib/requests.rb +2 -2
  111. data/lib/types_export.rb +29 -7
  112. metadata +33 -11
  113. data/lib/rcs/types/click_action.rb +0 -73
  114. data/lib/rcs/types/click_action_data_metadata.rb +0 -69
@@ -29,7 +29,7 @@ module Pinnacle
29
29
  #
30
30
  # @param request [Hash] Request of type Pinnacle::Types::AutofillCampaignParams, as a Hash
31
31
  # * :additional_info (String)
32
- # * :campaign_id (Integer)
32
+ # * :campaign_id (String)
33
33
  # @param request_options [Pinnacle::RequestOptions]
34
34
  # @return [Pinnacle::Campaigns::TollFree::Types::TollFreeAutofillResponse]
35
35
  # @example
@@ -38,7 +38,7 @@ module Pinnacle
38
38
  # environment: Pinnacle::Environment::DEFAULT,
39
39
  # api_key: "YOUR_API_KEY"
40
40
  # )
41
- # api.campaigns.toll_free.autofill(request: { additional_info: "Please autofill missing DLC campaign fields using my brand profile", campaign_id: 161 })
41
+ # api.campaigns.toll_free.autofill(request: { additional_info: "Please autofill missing campaign fields using my brand profile", campaign_id: "dlc_1234567890" })
42
42
  def autofill(request:, request_options: nil)
43
43
  response = @request_client.conn.post do |req|
44
44
  req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
@@ -59,7 +59,7 @@ module Pinnacle
59
59
 
60
60
  # Retrieve Toll-Free campaign.
61
61
  #
62
- # @param campaign_id [Integer] Unique identifier of toll-free campaign.
62
+ # @param campaign_id [String] Unique identifier of toll-free campaign. Must begin with the prefix `tf_`.
63
63
  # @param request_options [Pinnacle::RequestOptions]
64
64
  # @return [Pinnacle::Types::TollFreeCampaignWithExtendedBrandAndStatus]
65
65
  # @example
@@ -68,7 +68,7 @@ module Pinnacle
68
68
  # environment: Pinnacle::Environment::DEFAULT,
69
69
  # api_key: "YOUR_API_KEY"
70
70
  # )
71
- # api.campaigns.toll_free.get(campaign_id: 161)
71
+ # api.campaigns.toll_free.get(campaign_id: "tf_1234567890")
72
72
  def get(campaign_id:, request_options: nil)
73
73
  response = @request_client.conn.get do |req|
74
74
  req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
@@ -91,7 +91,8 @@ module Pinnacle
91
91
 
92
92
  # Submit your toll-free campaign for approval and activation with carriers.
93
93
  #
94
- # @param campaign_id [Integer] Unique identifier of the toll-free campaign to submit.
94
+ # @param campaign_id [String] Unique identifier of the toll-free campaign to submit. Must begin with the
95
+ # prefix `tf_`.
95
96
  # @param request_options [Pinnacle::RequestOptions]
96
97
  # @return [Pinnacle::Types::CampaignSubmissionResult]
97
98
  # @example
@@ -100,7 +101,7 @@ module Pinnacle
100
101
  # environment: Pinnacle::Environment::DEFAULT,
101
102
  # api_key: "YOUR_API_KEY"
102
103
  # )
103
- # api.campaigns.toll_free.submit(campaign_id: 161)
104
+ # api.campaigns.toll_free.submit(campaign_id: "tf_1234567890")
104
105
  def submit(campaign_id:, request_options: nil)
105
106
  response = @request_client.conn.post do |req|
106
107
  req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
@@ -124,8 +125,10 @@ module Pinnacle
124
125
  # Create a new toll-free campaign or updates an existing one.<br>
125
126
  # Omit campaignId to create a campaign.
126
127
  #
127
- # @param brand [Integer] Brand id.
128
- # @param campaign_id [Integer] Unique identifier for the campaign.
128
+ # @param brand [String] Brand id. This identifier is a string that always begins with the prefix `b_`,
129
+ # for example: `b_1234567890`.
130
+ # @param campaign_id [String] Unique identifier for the campaign. This identifier is a string that always
131
+ # begins with the prefix `tf_`, for example: `tf_1234567890`.
129
132
  # @param monthly_volume [Pinnacle::Types::MessageVolumeEnum]
130
133
  # @param name [String] Display name of the campaign.
131
134
  # @param opt_in [Hash] Opt-in keyword settings.Request of type Pinnacle::Campaigns::TollFree::Types::UpsertTollFreeSchemaOptIn, as a Hash
@@ -145,12 +148,12 @@ module Pinnacle
145
148
  # api_key: "YOUR_API_KEY"
146
149
  # )
147
150
  # api.campaigns.toll_free.upsert(
148
- # brand: 2,
149
- # campaign_id: 161,
151
+ # brand: "b_1234567890",
152
+ # campaign_id: "tf_1234567890",
150
153
  # monthly_volume: ONE_000,
151
154
  # name: "Pinnacle",
152
155
  # opt_in: { method_: DIGITAL, url: "https://www.pinnacle.sh/", workflow_description: "Visit https://www.pinnacle.sh/" },
153
- # production_message_content: "Join Pinnacle's workshop tomorrow and send your first RCS!",
156
+ # production_message_content: "Join the Pinnacle workshop tomorrow and send your first RCS!",
154
157
  # use_case: { summary: "Alerts clients about any Pinnacle hosted workshops.", value: WORKSHOP_ALERTS }
155
158
  # )
156
159
  def upsert(brand: nil, campaign_id: nil, monthly_volume: nil, name: nil, opt_in: nil,
@@ -186,7 +189,7 @@ module Pinnacle
186
189
  #
187
190
  # @param request [Hash] Request of type Pinnacle::Types::ValidateCampaignParams, as a Hash
188
191
  # * :additional_info (String)
189
- # * :campaign_id (Integer)
192
+ # * :campaign_id (String)
190
193
  # @param request_options [Pinnacle::RequestOptions]
191
194
  # @return [Pinnacle::Types::CampaignValidationResult]
192
195
  # @example
@@ -195,7 +198,7 @@ module Pinnacle
195
198
  # environment: Pinnacle::Environment::DEFAULT,
196
199
  # api_key: "YOUR_API_KEY"
197
200
  # )
198
- # api.campaigns.toll_free.validate(request: { additional_info: "Please validate this DLC campaign for 10DLC compliance", campaign_id: 161 })
201
+ # api.campaigns.toll_free.validate(request: { additional_info: "Please validate this DLC campaign for 10DLC compliance", campaign_id: "dlc_1234567890" })
199
202
  def validate(request:, request_options: nil)
200
203
  response = @request_client.conn.post do |req|
201
204
  req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
@@ -230,7 +233,7 @@ module Pinnacle
230
233
  #
231
234
  # @param request [Hash] Request of type Pinnacle::Types::AutofillCampaignParams, as a Hash
232
235
  # * :additional_info (String)
233
- # * :campaign_id (Integer)
236
+ # * :campaign_id (String)
234
237
  # @param request_options [Pinnacle::RequestOptions]
235
238
  # @return [Pinnacle::Campaigns::TollFree::Types::TollFreeAutofillResponse]
236
239
  # @example
@@ -239,7 +242,7 @@ module Pinnacle
239
242
  # environment: Pinnacle::Environment::DEFAULT,
240
243
  # api_key: "YOUR_API_KEY"
241
244
  # )
242
- # api.campaigns.toll_free.autofill(request: { additional_info: "Please autofill missing DLC campaign fields using my brand profile", campaign_id: 161 })
245
+ # api.campaigns.toll_free.autofill(request: { additional_info: "Please autofill missing campaign fields using my brand profile", campaign_id: "dlc_1234567890" })
243
246
  def autofill(request:, request_options: nil)
244
247
  Async do
245
248
  response = @request_client.conn.post do |req|
@@ -262,7 +265,7 @@ module Pinnacle
262
265
 
263
266
  # Retrieve Toll-Free campaign.
264
267
  #
265
- # @param campaign_id [Integer] Unique identifier of toll-free campaign.
268
+ # @param campaign_id [String] Unique identifier of toll-free campaign. Must begin with the prefix `tf_`.
266
269
  # @param request_options [Pinnacle::RequestOptions]
267
270
  # @return [Pinnacle::Types::TollFreeCampaignWithExtendedBrandAndStatus]
268
271
  # @example
@@ -271,7 +274,7 @@ module Pinnacle
271
274
  # environment: Pinnacle::Environment::DEFAULT,
272
275
  # api_key: "YOUR_API_KEY"
273
276
  # )
274
- # api.campaigns.toll_free.get(campaign_id: 161)
277
+ # api.campaigns.toll_free.get(campaign_id: "tf_1234567890")
275
278
  def get(campaign_id:, request_options: nil)
276
279
  Async do
277
280
  response = @request_client.conn.get do |req|
@@ -296,7 +299,8 @@ module Pinnacle
296
299
 
297
300
  # Submit your toll-free campaign for approval and activation with carriers.
298
301
  #
299
- # @param campaign_id [Integer] Unique identifier of the toll-free campaign to submit.
302
+ # @param campaign_id [String] Unique identifier of the toll-free campaign to submit. Must begin with the
303
+ # prefix `tf_`.
300
304
  # @param request_options [Pinnacle::RequestOptions]
301
305
  # @return [Pinnacle::Types::CampaignSubmissionResult]
302
306
  # @example
@@ -305,7 +309,7 @@ module Pinnacle
305
309
  # environment: Pinnacle::Environment::DEFAULT,
306
310
  # api_key: "YOUR_API_KEY"
307
311
  # )
308
- # api.campaigns.toll_free.submit(campaign_id: 161)
312
+ # api.campaigns.toll_free.submit(campaign_id: "tf_1234567890")
309
313
  def submit(campaign_id:, request_options: nil)
310
314
  Async do
311
315
  response = @request_client.conn.post do |req|
@@ -331,8 +335,10 @@ module Pinnacle
331
335
  # Create a new toll-free campaign or updates an existing one.<br>
332
336
  # Omit campaignId to create a campaign.
333
337
  #
334
- # @param brand [Integer] Brand id.
335
- # @param campaign_id [Integer] Unique identifier for the campaign.
338
+ # @param brand [String] Brand id. This identifier is a string that always begins with the prefix `b_`,
339
+ # for example: `b_1234567890`.
340
+ # @param campaign_id [String] Unique identifier for the campaign. This identifier is a string that always
341
+ # begins with the prefix `tf_`, for example: `tf_1234567890`.
336
342
  # @param monthly_volume [Pinnacle::Types::MessageVolumeEnum]
337
343
  # @param name [String] Display name of the campaign.
338
344
  # @param opt_in [Hash] Opt-in keyword settings.Request of type Pinnacle::Campaigns::TollFree::Types::UpsertTollFreeSchemaOptIn, as a Hash
@@ -352,12 +358,12 @@ module Pinnacle
352
358
  # api_key: "YOUR_API_KEY"
353
359
  # )
354
360
  # api.campaigns.toll_free.upsert(
355
- # brand: 2,
356
- # campaign_id: 161,
361
+ # brand: "b_1234567890",
362
+ # campaign_id: "tf_1234567890",
357
363
  # monthly_volume: ONE_000,
358
364
  # name: "Pinnacle",
359
365
  # opt_in: { method_: DIGITAL, url: "https://www.pinnacle.sh/", workflow_description: "Visit https://www.pinnacle.sh/" },
360
- # production_message_content: "Join Pinnacle's workshop tomorrow and send your first RCS!",
366
+ # production_message_content: "Join the Pinnacle workshop tomorrow and send your first RCS!",
361
367
  # use_case: { summary: "Alerts clients about any Pinnacle hosted workshops.", value: WORKSHOP_ALERTS }
362
368
  # )
363
369
  def upsert(brand: nil, campaign_id: nil, monthly_volume: nil, name: nil, opt_in: nil,
@@ -395,7 +401,7 @@ module Pinnacle
395
401
  #
396
402
  # @param request [Hash] Request of type Pinnacle::Types::ValidateCampaignParams, as a Hash
397
403
  # * :additional_info (String)
398
- # * :campaign_id (Integer)
404
+ # * :campaign_id (String)
399
405
  # @param request_options [Pinnacle::RequestOptions]
400
406
  # @return [Pinnacle::Types::CampaignValidationResult]
401
407
  # @example
@@ -404,7 +410,7 @@ module Pinnacle
404
410
  # environment: Pinnacle::Environment::DEFAULT,
405
411
  # api_key: "YOUR_API_KEY"
406
412
  # )
407
- # api.campaigns.toll_free.validate(request: { additional_info: "Please validate this DLC campaign for 10DLC compliance", campaign_id: 161 })
413
+ # api.campaigns.toll_free.validate(request: { additional_info: "Please validate this DLC campaign for 10DLC compliance", campaign_id: "dlc_1234567890" })
408
414
  def validate(request:, request_options: nil)
409
415
  Async do
410
416
  response = @request_client.conn.post do |req|
@@ -11,9 +11,9 @@ module Pinnacle
11
11
  module TollFree
12
12
  module Types
13
13
  class TollFreeAutofillResponse
14
- # @return [Integer]
14
+ # @return [String]
15
15
  attr_reader :brand
16
- # @return [Integer] Unique identifier for the campaign.
16
+ # @return [String] Unique identifier for the campaign. Must begin with the prefix `tf_`.
17
17
  attr_reader :campaign_id
18
18
  # @return [Pinnacle::Types::MessageVolumeEnum]
19
19
  attr_reader :monthly_volume
@@ -33,8 +33,8 @@ module Pinnacle
33
33
 
34
34
  OMIT = Object.new
35
35
 
36
- # @param brand [Integer]
37
- # @param campaign_id [Integer] Unique identifier for the campaign.
36
+ # @param brand [String]
37
+ # @param campaign_id [String] Unique identifier for the campaign. Must begin with the prefix `tf_`.
38
38
  # @param monthly_volume [Pinnacle::Types::MessageVolumeEnum]
39
39
  # @param name [String] Display name of the campaign.
40
40
  # @param opt_in [Pinnacle::Types::UpsertTollFreeCampaignOptIn] Opt-in keyword settings.
@@ -115,8 +115,8 @@ module Pinnacle
115
115
  # @param obj [Object]
116
116
  # @return [Void]
117
117
  def self.validate_raw(obj:)
118
- obj.brand&.is_a?(Integer) != false || raise("Passed value for field obj.brand is not the expected type, validation failed.")
119
- obj.campaign_id&.is_a?(Integer) != false || raise("Passed value for field obj.campaign_id is not the expected type, validation failed.")
118
+ obj.brand&.is_a?(String) != false || raise("Passed value for field obj.brand is not the expected type, validation failed.")
119
+ obj.campaign_id&.is_a?(String) != false || raise("Passed value for field obj.campaign_id is not the expected type, validation failed.")
120
120
  obj.monthly_volume&.is_a?(Pinnacle::Types::MessageVolumeEnum) != false || raise("Passed value for field obj.monthly_volume is not the expected type, validation failed.")
121
121
  obj.name&.is_a?(String) != false || raise("Passed value for field obj.name is not the expected type, validation failed.")
122
122
  obj.opt_in.nil? || Pinnacle::Types::UpsertTollFreeCampaignOptIn.validate_raw(obj: obj.opt_in)
@@ -19,7 +19,7 @@ module Pinnacle
19
19
 
20
20
  # Retrieve contact information for a given number.
21
21
  #
22
- # @param id [Integer] Unique identifier of a specific contact you want to retrieve. <br>
22
+ # @param id [String] Unique identifier of a specific contact you want to retrieve. <br>
23
23
  # Either this parameter or `phoneNumber` must be provided, but not both.
24
24
  # @param phone_number [String] Phone number you want to look up contact information for, provided in
25
25
  # URL-encoded E.164 format with %2B prefix instead of +.
@@ -31,7 +31,7 @@ module Pinnacle
31
31
  # environment: Pinnacle::Environment::DEFAULT,
32
32
  # api_key: "YOUR_API_KEY"
33
33
  # )
34
- # api.contacts.get
34
+ # api.contacts.get(id: "co_1234567890")
35
35
  def get(id: nil, phone_number: nil, request_options: nil)
36
36
  response = @request_client.conn.get do |req|
37
37
  req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
@@ -101,7 +101,8 @@ module Pinnacle
101
101
  # @param email [String] New email address for your contact.
102
102
  # @param name [String] New name for your contact.
103
103
  # @param tags [Array<String>] New tags for your contact.
104
- # @param id [Integer] ID of the contact you want to update.
104
+ # @param id [String] ID of the contact you want to update. This identifier is a string that always
105
+ # begins with the prefix `co_`, for example: `co_1234567890`.
105
106
  # @param request_options [Pinnacle::RequestOptions]
106
107
  # @return [Pinnacle::Types::UpdatedContactId]
107
108
  # @example
@@ -110,7 +111,7 @@ module Pinnacle
110
111
  # environment: Pinnacle::Environment::DEFAULT,
111
112
  # api_key: "YOUR_API_KEY"
112
113
  # )
113
- # api.contacts.update(id: 137)
114
+ # api.contacts.update(id: "co_1234567890")
114
115
  def update(id:, description: nil, email: nil, name: nil, tags: nil, request_options: nil)
115
116
  response = @request_client.conn.put do |req|
116
117
  req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
@@ -149,7 +150,7 @@ module Pinnacle
149
150
 
150
151
  # Retrieve contact information for a given number.
151
152
  #
152
- # @param id [Integer] Unique identifier of a specific contact you want to retrieve. <br>
153
+ # @param id [String] Unique identifier of a specific contact you want to retrieve. <br>
153
154
  # Either this parameter or `phoneNumber` must be provided, but not both.
154
155
  # @param phone_number [String] Phone number you want to look up contact information for, provided in
155
156
  # URL-encoded E.164 format with %2B prefix instead of +.
@@ -161,7 +162,7 @@ module Pinnacle
161
162
  # environment: Pinnacle::Environment::DEFAULT,
162
163
  # api_key: "YOUR_API_KEY"
163
164
  # )
164
- # api.contacts.get
165
+ # api.contacts.get(id: "co_1234567890")
165
166
  def get(id: nil, phone_number: nil, request_options: nil)
166
167
  Async do
167
168
  response = @request_client.conn.get do |req|
@@ -235,7 +236,8 @@ module Pinnacle
235
236
  # @param email [String] New email address for your contact.
236
237
  # @param name [String] New name for your contact.
237
238
  # @param tags [Array<String>] New tags for your contact.
238
- # @param id [Integer] ID of the contact you want to update.
239
+ # @param id [String] ID of the contact you want to update. This identifier is a string that always
240
+ # begins with the prefix `co_`, for example: `co_1234567890`.
239
241
  # @param request_options [Pinnacle::RequestOptions]
240
242
  # @return [Pinnacle::Types::UpdatedContactId]
241
243
  # @example
@@ -244,7 +246,7 @@ module Pinnacle
244
246
  # environment: Pinnacle::Environment::DEFAULT,
245
247
  # api_key: "YOUR_API_KEY"
246
248
  # )
247
- # api.contacts.update(id: 137)
249
+ # api.contacts.update(id: "co_1234567890")
248
250
  def update(id:, description: nil, email: nil, name: nil, tags: nil, request_options: nil)
249
251
  Async do
250
252
  response = @request_client.conn.put do |req|
@@ -6,6 +6,12 @@ require_relative "../types/conversation"
6
6
  require_relative "../types/campaign_enum"
7
7
  require_relative "../types/conversation_list"
8
8
  require_relative "../types/successful_conversation_update"
9
+ require_relative "types/conversations_list_messages_request_sort_order"
10
+ require_relative "types/conversations_list_messages_request_direction"
11
+ require_relative "types/conversations_list_messages_request_status"
12
+ require_relative "types/conversations_list_messages_request_type"
13
+ require "date"
14
+ require_relative "../types/message_list"
9
15
  require "async"
10
16
 
11
17
  module Pinnacle
@@ -31,7 +37,7 @@ module Pinnacle
31
37
  # environment: Pinnacle::Environment::DEFAULT,
32
38
  # api_key: "YOUR_API_KEY"
33
39
  # )
34
- # api.conversations.get(request: { id: 1 })
40
+ # api.conversations.get(request: { id: "conv_1234567890" })
35
41
  def get(request:, request_options: nil)
36
42
  response = @request_client.conn.post do |req|
37
43
  req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
@@ -53,15 +59,20 @@ module Pinnacle
53
59
  # Retrieves conversations by page with optional filtering based off provided
54
60
  # parameters.
55
61
  #
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.
62
+ # @param brand_id [String] The unique identifier of the brand to filter conversations. This identifier is a
63
+ # string that always begins with the prefix `b_`, for example: `b_1234567890`.
64
+ # @param campaign_id [String] The unique identifier of the campaign to filter conversations. This identifier
65
+ # is a string that begins with the prefix:
66
+ # - TOLL_FREE: `tf_` (e.g., `tf_1234567890`)
67
+ # - 10DLC: `dlc_` (e.g., `dlc_1234567890`)
68
+ # - RCS: `rcs_` (e.g., `rcs_1234567890`)
58
69
  # @param campaign_type [Pinnacle::Types::CampaignEnum]
59
70
  # @param page_index [Integer] Zero-based index for pagination.
60
71
  # @param page_size [Integer] Number of conversations to return per page.
61
72
  # @param receiver [String] Receiver's phone number in E.164 format.
62
73
  # @param sender [String]
63
74
  # @param request_options [Pinnacle::RequestOptions]
64
- # @return [Pinnacle::Types::ErrorResponse, Pinnacle::Types::RetrievedConversations]
75
+ # @return [Pinnacle::Types::ConversationList]
65
76
  # @example
66
77
  # api = Pinnacle::Client.new(
67
78
  # base_url: "https://api.example.com",
@@ -69,8 +80,8 @@ module Pinnacle
69
80
  # api_key: "YOUR_API_KEY"
70
81
  # )
71
82
  # api.conversations.list(
72
- # brand_id: 101,
73
- # campaign_id: 136,
83
+ # brand_id: "b_1234567890",
84
+ # campaign_id: "tf_1234567890",
74
85
  # campaign_type: TOLL_FREE,
75
86
  # page_index: 0,
76
87
  # page_size: 20,
@@ -107,7 +118,8 @@ module Pinnacle
107
118
 
108
119
  # Update the notes associated with a specific conversation.
109
120
  #
110
- # @param id [Integer] The unique identifier of the conversation to update.
121
+ # @param id [String] The unique identifier of the conversation to update. This identifier is a string
122
+ # that always begins with the prefix `conv_`, for example: `conv_1234567890`.
111
123
  # @param notes [String] New notes or comments for the conversation.
112
124
  # @param request_options [Pinnacle::RequestOptions]
113
125
  # @return [Pinnacle::Types::SuccessfulConversationUpdate]
@@ -117,7 +129,7 @@ module Pinnacle
117
129
  # environment: Pinnacle::Environment::DEFAULT,
118
130
  # api_key: "YOUR_API_KEY"
119
131
  # )
120
- # api.conversations.update(id: 123, notes: "Follow-up completed. Customer satisfied with resolution.")
132
+ # api.conversations.update(id: "conv_1234567890", notes: "Follow-up completed. Customer satisfied with resolution.")
121
133
  def update(id:, notes:, request_options: nil)
122
134
  response = @request_client.conn.post do |req|
123
135
  req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
@@ -135,6 +147,60 @@ module Pinnacle
135
147
  end
136
148
  Pinnacle::Types::SuccessfulConversationUpdate.from_json(json_object: response.body)
137
149
  end
150
+
151
+ # Retrieve a paginated and filtered list of messages for a specific conversation.
152
+ #
153
+ # @param id [String] Unique identifier of the conversation. This identifier is a string that always
154
+ # begins with the prefix `conv_`, for example: `conv_1234567890`.
155
+ # @param page_index [Integer] Zero-based index for pagination.
156
+ # @param page_size [Integer] Number of messages to return per page.
157
+ # @param sort_order [Pinnacle::Conversations::Types::ConversationsListMessagesRequestSortOrder] Sort order for messages. <br>
158
+ # - `asc`: Oldest messages first
159
+ # - `desc`: Newest messages first (default)
160
+ # @param direction [Pinnacle::Conversations::Types::ConversationsListMessagesRequestDirection] Filter messages by direction. <br>
161
+ # - `INBOUND`: Messages received from contacts
162
+ # - `OUTBOUND`: Messages sent to contacts
163
+ # @param status [Pinnacle::Conversations::Types::ConversationsListMessagesRequestStatus] Filter messages by delivery status.
164
+ # @param type [Pinnacle::Conversations::Types::ConversationsListMessagesRequestType] Filter messages by protocol type.
165
+ # @param date_from [DateTime] Filter messages sent on or after this date (ISO 8601 format).
166
+ # @param date_to [DateTime] Filter messages sent on or before this date (ISO 8601 format).
167
+ # @param request_options [Pinnacle::RequestOptions]
168
+ # @return [Pinnacle::Types::MessageList]
169
+ # @example
170
+ # api = Pinnacle::Client.new(
171
+ # base_url: "https://api.example.com",
172
+ # environment: Pinnacle::Environment::DEFAULT,
173
+ # api_key: "YOUR_API_KEY"
174
+ # )
175
+ # api.conversations.list_messages(id: "id")
176
+ def list_messages(id:, page_index: nil, page_size: nil, sort_order: nil, direction: nil, status: nil, type: nil,
177
+ date_from: nil, date_to: nil, request_options: nil)
178
+ response = @request_client.conn.post do |req|
179
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
180
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
181
+ req.headers = {
182
+ **(req.headers || {}),
183
+ **@request_client.get_headers,
184
+ **(request_options&.additional_headers || {})
185
+ }.compact
186
+ req.params = {
187
+ **(request_options&.additional_query_parameters || {}),
188
+ "pageIndex": page_index,
189
+ "pageSize": page_size,
190
+ "sortOrder": sort_order,
191
+ "direction": direction,
192
+ "status": status,
193
+ "type": type,
194
+ "dateFrom": date_from,
195
+ "dateTo": date_to
196
+ }.compact
197
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
198
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
199
+ end
200
+ req.url "#{@request_client.get_url(request_options: request_options)}/conversations/#{id}/messages"
201
+ end
202
+ Pinnacle::Types::MessageList.from_json(json_object: response.body)
203
+ end
138
204
  end
139
205
 
140
206
  class AsyncConversationsClient
@@ -159,7 +225,7 @@ module Pinnacle
159
225
  # environment: Pinnacle::Environment::DEFAULT,
160
226
  # api_key: "YOUR_API_KEY"
161
227
  # )
162
- # api.conversations.get(request: { id: 1 })
228
+ # api.conversations.get(request: { id: "conv_1234567890" })
163
229
  def get(request:, request_options: nil)
164
230
  Async do
165
231
  response = @request_client.conn.post do |req|
@@ -183,15 +249,20 @@ module Pinnacle
183
249
  # Retrieves conversations by page with optional filtering based off provided
184
250
  # parameters.
185
251
  #
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.
252
+ # @param brand_id [String] The unique identifier of the brand to filter conversations. This identifier is a
253
+ # string that always begins with the prefix `b_`, for example: `b_1234567890`.
254
+ # @param campaign_id [String] The unique identifier of the campaign to filter conversations. This identifier
255
+ # is a string that begins with the prefix:
256
+ # - TOLL_FREE: `tf_` (e.g., `tf_1234567890`)
257
+ # - 10DLC: `dlc_` (e.g., `dlc_1234567890`)
258
+ # - RCS: `rcs_` (e.g., `rcs_1234567890`)
188
259
  # @param campaign_type [Pinnacle::Types::CampaignEnum]
189
260
  # @param page_index [Integer] Zero-based index for pagination.
190
261
  # @param page_size [Integer] Number of conversations to return per page.
191
262
  # @param receiver [String] Receiver's phone number in E.164 format.
192
263
  # @param sender [String]
193
264
  # @param request_options [Pinnacle::RequestOptions]
194
- # @return [Pinnacle::Types::ErrorResponse, Pinnacle::Types::RetrievedConversations]
265
+ # @return [Pinnacle::Types::ConversationList]
195
266
  # @example
196
267
  # api = Pinnacle::Client.new(
197
268
  # base_url: "https://api.example.com",
@@ -199,8 +270,8 @@ module Pinnacle
199
270
  # api_key: "YOUR_API_KEY"
200
271
  # )
201
272
  # api.conversations.list(
202
- # brand_id: 101,
203
- # campaign_id: 136,
273
+ # brand_id: "b_1234567890",
274
+ # campaign_id: "tf_1234567890",
204
275
  # campaign_type: TOLL_FREE,
205
276
  # page_index: 0,
206
277
  # page_size: 20,
@@ -239,7 +310,8 @@ module Pinnacle
239
310
 
240
311
  # Update the notes associated with a specific conversation.
241
312
  #
242
- # @param id [Integer] The unique identifier of the conversation to update.
313
+ # @param id [String] The unique identifier of the conversation to update. This identifier is a string
314
+ # that always begins with the prefix `conv_`, for example: `conv_1234567890`.
243
315
  # @param notes [String] New notes or comments for the conversation.
244
316
  # @param request_options [Pinnacle::RequestOptions]
245
317
  # @return [Pinnacle::Types::SuccessfulConversationUpdate]
@@ -249,7 +321,7 @@ module Pinnacle
249
321
  # environment: Pinnacle::Environment::DEFAULT,
250
322
  # api_key: "YOUR_API_KEY"
251
323
  # )
252
- # api.conversations.update(id: 123, notes: "Follow-up completed. Customer satisfied with resolution.")
324
+ # api.conversations.update(id: "conv_1234567890", notes: "Follow-up completed. Customer satisfied with resolution.")
253
325
  def update(id:, notes:, request_options: nil)
254
326
  Async do
255
327
  response = @request_client.conn.post do |req|
@@ -269,5 +341,61 @@ module Pinnacle
269
341
  Pinnacle::Types::SuccessfulConversationUpdate.from_json(json_object: response.body)
270
342
  end
271
343
  end
344
+
345
+ # Retrieve a paginated and filtered list of messages for a specific conversation.
346
+ #
347
+ # @param id [String] Unique identifier of the conversation. This identifier is a string that always
348
+ # begins with the prefix `conv_`, for example: `conv_1234567890`.
349
+ # @param page_index [Integer] Zero-based index for pagination.
350
+ # @param page_size [Integer] Number of messages to return per page.
351
+ # @param sort_order [Pinnacle::Conversations::Types::ConversationsListMessagesRequestSortOrder] Sort order for messages. <br>
352
+ # - `asc`: Oldest messages first
353
+ # - `desc`: Newest messages first (default)
354
+ # @param direction [Pinnacle::Conversations::Types::ConversationsListMessagesRequestDirection] Filter messages by direction. <br>
355
+ # - `INBOUND`: Messages received from contacts
356
+ # - `OUTBOUND`: Messages sent to contacts
357
+ # @param status [Pinnacle::Conversations::Types::ConversationsListMessagesRequestStatus] Filter messages by delivery status.
358
+ # @param type [Pinnacle::Conversations::Types::ConversationsListMessagesRequestType] Filter messages by protocol type.
359
+ # @param date_from [DateTime] Filter messages sent on or after this date (ISO 8601 format).
360
+ # @param date_to [DateTime] Filter messages sent on or before this date (ISO 8601 format).
361
+ # @param request_options [Pinnacle::RequestOptions]
362
+ # @return [Pinnacle::Types::MessageList]
363
+ # @example
364
+ # api = Pinnacle::Client.new(
365
+ # base_url: "https://api.example.com",
366
+ # environment: Pinnacle::Environment::DEFAULT,
367
+ # api_key: "YOUR_API_KEY"
368
+ # )
369
+ # api.conversations.list_messages(id: "id")
370
+ def list_messages(id:, page_index: nil, page_size: nil, sort_order: nil, direction: nil, status: nil, type: nil,
371
+ date_from: nil, date_to: nil, request_options: nil)
372
+ Async do
373
+ response = @request_client.conn.post do |req|
374
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
375
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
376
+ req.headers = {
377
+ **(req.headers || {}),
378
+ **@request_client.get_headers,
379
+ **(request_options&.additional_headers || {})
380
+ }.compact
381
+ req.params = {
382
+ **(request_options&.additional_query_parameters || {}),
383
+ "pageIndex": page_index,
384
+ "pageSize": page_size,
385
+ "sortOrder": sort_order,
386
+ "direction": direction,
387
+ "status": status,
388
+ "type": type,
389
+ "dateFrom": date_from,
390
+ "dateTo": date_to
391
+ }.compact
392
+ unless request_options.nil? || request_options&.additional_body_parameters.nil?
393
+ req.body = { **(request_options&.additional_body_parameters || {}) }.compact
394
+ end
395
+ req.url "#{@request_client.get_url(request_options: request_options)}/conversations/#{id}/messages"
396
+ end
397
+ Pinnacle::Types::MessageList.from_json(json_object: response.body)
398
+ end
399
+ end
272
400
  end
273
401
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Conversations
5
+ module Types
6
+ class ConversationsListMessagesRequestDirection
7
+ INBOUND = "INBOUND"
8
+ OUTBOUND = "OUTBOUND"
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Conversations
5
+ module Types
6
+ class ConversationsListMessagesRequestSortOrder
7
+ ASC = "asc"
8
+ DESC = "desc"
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Conversations
5
+ module Types
6
+ class ConversationsListMessagesRequestStatus
7
+ PENDING = "PENDING"
8
+ SENT = "SENT"
9
+ SEND_FAILED = "SEND_FAILED"
10
+ DELIVERED = "DELIVERED"
11
+ DELIVERY_FAILED = "DELIVERY_FAILED"
12
+ RECEIVED = "RECEIVED"
13
+ READ = "READ"
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Conversations
5
+ module Types
6
+ class ConversationsListMessagesRequestType
7
+ SMS = "SMS"
8
+ MMS = "MMS"
9
+ RCS = "RCS"
10
+ end
11
+ end
12
+ end
13
+ end