rcs 2.0.14 → 2.0.16

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 (63) hide show
  1. checksums.yaml +4 -4
  2. data/.fern/metadata.json +4 -3
  3. data/.rubocop.yml +19 -0
  4. data/lib/pinnacle/campaigns/rcs/types/upsert_rcs_campaign_params.rb +3 -6
  5. data/lib/pinnacle/client.rb +1 -1
  6. data/lib/pinnacle/internal/types/boolean.rb +1 -1
  7. data/lib/pinnacle/internal/types/utils.rb +2 -2
  8. data/lib/pinnacle/messages/client.rb +5 -0
  9. data/lib/pinnacle/messages/simulate/client.rb +50 -0
  10. data/lib/pinnacle/phone_numbers/client.rb +0 -5
  11. data/lib/pinnacle/types/attach_webhook_response_webhook.rb +2 -2
  12. data/lib/pinnacle/types/attach_webhook_result.rb +12 -0
  13. data/lib/pinnacle/types/detach_webhook_result.rb +11 -0
  14. data/lib/pinnacle/types/extended_brand_with_vetting.rb +2 -2
  15. data/lib/pinnacle/types/extended_rcs_campaign.rb +3 -6
  16. data/lib/pinnacle/types/failed_sender.rb +10 -0
  17. data/lib/pinnacle/types/rcs_campaign.rb +3 -6
  18. data/lib/pinnacle/types/rcs_campaign_summary.rb +0 -1
  19. data/lib/pinnacle/types/rcs_cards_content.rb +1 -1
  20. data/lib/pinnacle/types/rcs_cards_content_cards_item.rb +1 -1
  21. data/lib/pinnacle/types/rcs_media_content.rb +1 -1
  22. data/lib/pinnacle/types/rcs_validate_content_media.rb +1 -1
  23. data/lib/pinnacle/types/rich_card.rb +1 -1
  24. data/lib/pinnacle/types/rich_cards.rb +1 -1
  25. data/lib/pinnacle/types/rich_media_message.rb +1 -1
  26. data/lib/pinnacle/types/rich_text.rb +1 -1
  27. data/lib/pinnacle/types/send_rich_cards_options.rb +5 -0
  28. data/lib/pinnacle/types/send_rich_message_options_4.rb +13 -0
  29. data/lib/pinnacle/types/simulate_message_input.rb +12 -0
  30. data/lib/pinnacle/types/simulate_user_button.rb +12 -0
  31. data/lib/pinnacle/types/simulate_user_message.rb +12 -0
  32. data/lib/pinnacle/types/simulate_user_params.rb +13 -0
  33. data/lib/pinnacle/types/simulate_user_response.rb +10 -0
  34. data/lib/pinnacle/types/user_button_press.rb +19 -0
  35. data/lib/pinnacle/types/user_button_press_call.rb +12 -0
  36. data/lib/pinnacle/types/user_button_press_open_url.rb +12 -0
  37. data/lib/pinnacle/types/user_button_press_request_user_location.rb +12 -0
  38. data/lib/pinnacle/types/user_button_press_request_user_location_location.rb +13 -0
  39. data/lib/pinnacle/types/user_button_press_schedule_event.rb +15 -0
  40. data/lib/pinnacle/types/user_button_press_send_location.rb +13 -0
  41. data/lib/pinnacle/types/user_button_press_send_location_lat_long.rb +11 -0
  42. data/lib/pinnacle/types/user_button_press_trigger.rb +12 -0
  43. data/lib/pinnacle/types/vcard_content.rb +1 -1
  44. data/lib/pinnacle/types/webhook_event_enum.rb +1 -0
  45. data/lib/pinnacle/types/webhook_summary.rb +1 -0
  46. data/lib/pinnacle/types/webhooks.rb +1 -0
  47. data/lib/pinnacle/version.rb +1 -1
  48. data/lib/pinnacle/webhooks/client.rb +85 -0
  49. data/lib/pinnacle/webhooks/types/attach_webhook_params.rb +16 -0
  50. data/lib/pinnacle/webhooks/types/detach_webhook_params.rb +12 -0
  51. data/lib/pinnacle.rb +23 -12
  52. data/reference.md +223 -151
  53. metadata +23 -12
  54. data/lib/pinnacle/campaigns/rcs/types/rcs_use_case.rb +0 -15
  55. data/lib/pinnacle/phone_numbers/webhook/client.rb +0 -90
  56. data/lib/pinnacle/types/attach_webhook_by_id_params.rb +0 -11
  57. data/lib/pinnacle/types/attach_webhook_params.rb +0 -15
  58. data/lib/pinnacle/types/configured_webhook.rb +0 -13
  59. data/lib/pinnacle/types/create_and_attach_webhook_by_url_params.rb +0 -12
  60. data/lib/pinnacle/types/detached_webhook_info.rb +0 -11
  61. data/lib/pinnacle/types/rcs_campaign_schema_extra_use_case.rb +0 -11
  62. data/lib/pinnacle/types/rcs_campaign_schema_use_case.rb +0 -11
  63. data/lib/pinnacle/types/rcs_campaign_use_case_enum.rb +0 -43
@@ -7,6 +7,7 @@ module Pinnacle
7
7
 
8
8
  MESSAGE_STATUS = "MESSAGE.STATUS"
9
9
  MESSAGE_RECEIVED = "MESSAGE.RECEIVED"
10
+ USER_TYPING = "USER.TYPING"
10
11
  end
11
12
  end
12
13
  end
@@ -9,6 +9,7 @@ module Pinnacle
9
9
  field :status, -> { Pinnacle::Types::WebhookSummaryStatus }, optional: false, nullable: false
10
10
  field :created_at, -> { String }, optional: false, nullable: false, api_name: "createdAt"
11
11
  field :updated_at, -> { String }, optional: false, nullable: false, api_name: "updatedAt"
12
+ field :headers, -> { Internal::Types::Hash[String, String] }, optional: true, nullable: false
12
13
  end
13
14
  end
14
15
  end
@@ -7,6 +7,7 @@ module Pinnacle
7
7
  field :endpoint, -> { String }, optional: false, nullable: false
8
8
  field :id, -> { String }, optional: false, nullable: false
9
9
  field :name, -> { String }, optional: false, nullable: false
10
+ field :headers, -> { Internal::Types::Hash[String, String] }, optional: true, nullable: false
10
11
  end
11
12
  end
12
13
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pinnacle
4
- VERSION = "2.0.14"
4
+ VERSION = "2.0.16"
5
5
  end
@@ -77,6 +77,91 @@ module Pinnacle
77
77
  raise error_class.new(response.body, code: code)
78
78
  end
79
79
  end
80
+
81
+ # Attach a webhook to one or more senders (phone numbers or RCS agent IDs) to receive real-time event
82
+ # notifications. <br>
83
+ #
84
+ # You can attach an existing webhook by providing its ID, or create a new webhook by specifying a name and URL.
85
+ # Supports bulk operations with up to 50 senders per request. <br>
86
+ #
87
+ # Subscriptions are additive — attaching new senders does not remove existing ones. Re-attaching the same sender
88
+ # updates the event type filter without creating duplicates. <br>
89
+ #
90
+ # **Custom headers** may be provided in either case via the optional `headers` field. When attaching a new
91
+ # webhook, the headers are stored on the webhook and sent on every delivery. When attaching an existing
92
+ # `webhookId`, supplying `headers` **overwrites** the stored headers on that webhook — omit the field to leave
93
+ # them unchanged, or pass an empty object `{}` to clear them. The reserved `PINNACLE-SIGNING-SECRET` header is
94
+ # always set by Pinnacle and cannot be overridden.
95
+ #
96
+ # @param request_options [Hash]
97
+ # @param params [Pinnacle::Webhooks::Types::AttachWebhookParams]
98
+ # @option request_options [String] :base_url
99
+ # @option request_options [Hash{String => Object}] :additional_headers
100
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
101
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
102
+ # @option request_options [Integer] :timeout_in_seconds
103
+ #
104
+ # @return [Pinnacle::Types::AttachWebhookResult]
105
+ def attach(request_options: {}, **params)
106
+ params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
107
+ request = Pinnacle::Internal::JSON::Request.new(
108
+ base_url: request_options[:base_url],
109
+ method: "POST",
110
+ path: "webhooks/attach",
111
+ body: Pinnacle::Webhooks::Types::AttachWebhookParams.new(params).to_h,
112
+ request_options: request_options
113
+ )
114
+ begin
115
+ response = @client.send(request)
116
+ rescue Net::HTTPRequestTimeout
117
+ raise Pinnacle::Errors::TimeoutError
118
+ end
119
+ code = response.code.to_i
120
+ if code.between?(200, 299)
121
+ Pinnacle::Types::AttachWebhookResult.load(response.body)
122
+ else
123
+ error_class = Pinnacle::Errors::ResponseError.subclass_for_code(code)
124
+ raise error_class.new(response.body, code: code)
125
+ end
126
+ end
127
+
128
+ # Detach a webhook from one or more senders (phone numbers or RCS agent IDs) to stop receiving event
129
+ # notifications. <br>
130
+ #
131
+ # The webhook itself is not deleted and remains available for use with other senders. Works regardless of webhook
132
+ # status. Supports bulk operations with up to 50 senders per request.
133
+ #
134
+ # @param request_options [Hash]
135
+ # @param params [Pinnacle::Webhooks::Types::DetachWebhookParams]
136
+ # @option request_options [String] :base_url
137
+ # @option request_options [Hash{String => Object}] :additional_headers
138
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
139
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
140
+ # @option request_options [Integer] :timeout_in_seconds
141
+ #
142
+ # @return [Pinnacle::Types::DetachWebhookResult]
143
+ def detach(request_options: {}, **params)
144
+ params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
145
+ request = Pinnacle::Internal::JSON::Request.new(
146
+ base_url: request_options[:base_url],
147
+ method: "POST",
148
+ path: "webhooks/detach",
149
+ body: Pinnacle::Webhooks::Types::DetachWebhookParams.new(params).to_h,
150
+ request_options: request_options
151
+ )
152
+ begin
153
+ response = @client.send(request)
154
+ rescue Net::HTTPRequestTimeout
155
+ raise Pinnacle::Errors::TimeoutError
156
+ end
157
+ code = response.code.to_i
158
+ if code.between?(200, 299)
159
+ Pinnacle::Types::DetachWebhookResult.load(response.body)
160
+ else
161
+ error_class = Pinnacle::Errors::ResponseError.subclass_for_code(code)
162
+ raise error_class.new(response.body, code: code)
163
+ end
164
+ end
80
165
  end
81
166
  end
82
167
  end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Webhooks
5
+ module Types
6
+ class AttachWebhookParams < Internal::Types::Model
7
+ field :senders, -> { Internal::Types::Array[String] }, optional: false, nullable: false
8
+ field :webhook_id, -> { String }, optional: true, nullable: false, api_name: "webhookId"
9
+ field :name, -> { String }, optional: true, nullable: false
10
+ field :url, -> { String }, optional: true, nullable: false
11
+ field :event, -> { Pinnacle::Types::WebhookEventEnum }, optional: true, nullable: false
12
+ field :headers, -> { Internal::Types::Hash[String, String] }, optional: true, nullable: false
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Webhooks
5
+ module Types
6
+ class DetachWebhookParams < Internal::Types::Model
7
+ field :webhook_id, -> { String }, optional: false, nullable: false, api_name: "webhookId"
8
+ field :senders, -> { Internal::Types::Array[String] }, optional: false, nullable: false
9
+ end
10
+ end
11
+ end
12
+ end
data/lib/pinnacle.rb CHANGED
@@ -110,14 +110,12 @@ require_relative "pinnacle/campaigns/toll_free/types/toll_free_campaign_opt_in"
110
110
  require_relative "pinnacle/campaigns/toll_free/types/toll_free_campaign_options"
111
111
  require_relative "pinnacle/campaigns/toll_free/types/toll_free_campaign_use_case"
112
112
  require_relative "pinnacle/campaigns/toll_free/types/list_toll_free_campaigns_request_status"
113
- require_relative "pinnacle/types/rcs_campaign_use_case_enum"
114
113
  require_relative "pinnacle/types/rcs_messaging_type_enum"
115
114
  require_relative "pinnacle/types/rcs_campaign_schema_agent_emails_item"
116
115
  require_relative "pinnacle/types/rcs_campaign_schema_agent_phones_item"
117
116
  require_relative "pinnacle/types/rcs_campaign_schema_agent_websites_item"
118
117
  require_relative "pinnacle/types/rcs_campaign_schema_agent"
119
118
  require_relative "pinnacle/types/rcs_campaign_schema_links"
120
- require_relative "pinnacle/types/rcs_campaign_schema_use_case"
121
119
  require_relative "pinnacle/types/rcs_campaign_schema_keywords_help"
122
120
  require_relative "pinnacle/types/rcs_campaign_schema_keywords_opt_in"
123
121
  require_relative "pinnacle/types/rcs_campaign_schema_keywords_opt_out"
@@ -130,7 +128,6 @@ require_relative "pinnacle/campaigns/rcs/types/rcs_agent_phone"
130
128
  require_relative "pinnacle/campaigns/rcs/types/rcs_agent_website"
131
129
  require_relative "pinnacle/campaigns/rcs/types/rcs_agent"
132
130
  require_relative "pinnacle/campaigns/rcs/types/rcs_links"
133
- require_relative "pinnacle/campaigns/rcs/types/rcs_use_case"
134
131
  require_relative "pinnacle/campaigns/rcs/types/rcs_campaign_help_keywords"
135
132
  require_relative "pinnacle/campaigns/rcs/types/rcs_campaign_opt_in_keywords"
136
133
  require_relative "pinnacle/campaigns/rcs/types/rcs_campaign_opt_out_keywords"
@@ -229,7 +226,6 @@ require_relative "pinnacle/types/rcs_campaign_schema_extra_agent_phones_item"
229
226
  require_relative "pinnacle/types/rcs_campaign_schema_extra_agent_websites_item"
230
227
  require_relative "pinnacle/types/rcs_campaign_schema_extra_agent"
231
228
  require_relative "pinnacle/types/rcs_campaign_schema_extra_links"
232
- require_relative "pinnacle/types/rcs_campaign_schema_extra_use_case"
233
229
  require_relative "pinnacle/types/rcs_campaign_schema_extra_keywords_help"
234
230
  require_relative "pinnacle/types/rcs_campaign_schema_extra_keywords_opt_in"
235
231
  require_relative "pinnacle/types/rcs_campaign_schema_extra_keywords_opt_out"
@@ -306,6 +302,7 @@ require_relative "pinnacle/types/rich_text_message"
306
302
  require_relative "pinnacle/types/rich_media_message"
307
303
  require_relative "pinnacle/types/rich_card"
308
304
  require_relative "pinnacle/types/rich_cards"
305
+ require_relative "pinnacle/types/send_rich_message_options_4"
309
306
  require_relative "pinnacle/types/send_rcs_card_options_standalone_card_orientation"
310
307
  require_relative "pinnacle/types/send_rcs_card_options_standalone_card_image_alignment"
311
308
  require_relative "pinnacle/types/rich_standalone_card_options"
@@ -337,6 +334,20 @@ require_relative "pinnacle/types/list_scheduled_messages_response"
337
334
  require_relative "pinnacle/types/blast_summary_type"
338
335
  require_relative "pinnacle/types/blast_summary"
339
336
  require_relative "pinnacle/types/list_blasts_response"
337
+ require_relative "pinnacle/types/simulate_message_input"
338
+ require_relative "pinnacle/types/simulate_user_message"
339
+ require_relative "pinnacle/types/user_button_press_trigger"
340
+ require_relative "pinnacle/types/user_button_press_open_url"
341
+ require_relative "pinnacle/types/user_button_press_call"
342
+ require_relative "pinnacle/types/user_button_press_schedule_event"
343
+ require_relative "pinnacle/types/user_button_press_send_location_lat_long"
344
+ require_relative "pinnacle/types/user_button_press_send_location"
345
+ require_relative "pinnacle/types/user_button_press_request_user_location_location"
346
+ require_relative "pinnacle/types/user_button_press_request_user_location"
347
+ require_relative "pinnacle/types/user_button_press"
348
+ require_relative "pinnacle/types/simulate_user_button"
349
+ require_relative "pinnacle/types/simulate_user_params"
350
+ require_relative "pinnacle/types/simulate_user_response"
340
351
  require_relative "pinnacle/types/phone_feature_enum"
341
352
  require_relative "pinnacle/types/phone_enum"
342
353
  require_relative "pinnacle/types/phone_number_cost"
@@ -344,13 +355,6 @@ require_relative "pinnacle/types/phone_number_region"
344
355
  require_relative "pinnacle/types/phone_number_details"
345
356
  require_relative "pinnacle/types/buy_response_capabilities"
346
357
  require_relative "pinnacle/types/purchased_number"
347
- require_relative "pinnacle/types/webhook_event_enum"
348
- require_relative "pinnacle/types/attach_webhook_by_id_params"
349
- require_relative "pinnacle/types/create_and_attach_webhook_by_url_params"
350
- require_relative "pinnacle/types/attach_webhook_params"
351
- require_relative "pinnacle/types/attach_webhook_response_webhook"
352
- require_relative "pinnacle/types/configured_webhook"
353
- require_relative "pinnacle/types/detached_webhook_info"
354
358
  require_relative "pinnacle/types/messaging_profile_enum"
355
359
  require_relative "pinnacle/types/phone_number_campaign_attach_phone_numbers_item_campaign"
356
360
  require_relative "pinnacle/types/phone_number_campaign_attach_phone_numbers_item"
@@ -434,6 +438,11 @@ require_relative "pinnacle/types/webhook_result"
434
438
  require_relative "pinnacle/types/webhook_summary_status"
435
439
  require_relative "pinnacle/types/webhook_summary"
436
440
  require_relative "pinnacle/types/list_webhooks_response"
441
+ require_relative "pinnacle/types/webhook_event_enum"
442
+ require_relative "pinnacle/types/failed_sender"
443
+ require_relative "pinnacle/types/attach_webhook_response_webhook"
444
+ require_relative "pinnacle/types/attach_webhook_result"
445
+ require_relative "pinnacle/types/detach_webhook_result"
437
446
  require_relative "pinnacle/types/message_event_sms_content"
438
447
  require_relative "pinnacle/types/message_event_mms_content"
439
448
  require_relative "pinnacle/types/message_event_rcs_text_content"
@@ -490,6 +499,8 @@ require_relative "pinnacle/rcs/types/rcs_link_request"
490
499
  require_relative "pinnacle/webhooks/client"
491
500
  require_relative "pinnacle/webhooks/types/get_webhook_params"
492
501
  require_relative "pinnacle/webhooks/types/list_webhooks_params"
502
+ require_relative "pinnacle/webhooks/types/attach_webhook_params"
503
+ require_relative "pinnacle/webhooks/types/detach_webhook_params"
493
504
  require_relative "pinnacle/audiences/contacts/client"
494
505
  require_relative "pinnacle/audiences/contacts/types/remove_contacts_params"
495
506
  require_relative "pinnacle/audiences/contacts/types/add_contacts_params"
@@ -518,7 +529,7 @@ require_relative "pinnacle/messages/schedules/client"
518
529
  require_relative "pinnacle/messages/schedules/types/list_scheduled_messages_params"
519
530
  require_relative "pinnacle/messages/blasts/client"
520
531
  require_relative "pinnacle/messages/blasts/types/list_blasts_params"
521
- require_relative "pinnacle/phone_numbers/webhook/client"
532
+ require_relative "pinnacle/messages/simulate/client"
522
533
  require_relative "pinnacle/phone_numbers/campaign/client"
523
534
  require_relative "pinnacle/phone_numbers/campaign/types/attach_campaign_params"
524
535
  require_relative "pinnacle/phone_numbers/campaign/types/detach_campaign_params"