rcs 2.0.0.pre.rc.2 → 2.0.0.pre.rc.3

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 (77) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rcs/brands/client.rb +6 -6
  3. data/lib/rcs/brands/types/{autofill_brand_schema_options.rb → autofill_brand_options.rb} +5 -5
  4. data/lib/rcs/campaigns/dlc/client.rb +12 -12
  5. data/lib/rcs/campaigns/dlc/types/{upsert_dlc_schema_keywords_help.rb → upsert_dlc_campaign_help_keywords.rb} +5 -5
  6. data/lib/rcs/campaigns/dlc/types/{upsert_dlc_schema_keywords.rb → upsert_dlc_campaign_keywords.rb} +20 -20
  7. data/lib/rcs/campaigns/dlc/types/{upsert_dlc_schema_links.rb → upsert_dlc_campaign_links.rb} +5 -5
  8. data/lib/rcs/campaigns/dlc/types/{upsert_dlc_schema_keywords_opt_in.rb → upsert_dlc_campaign_opt_in_keywords.rb} +5 -5
  9. data/lib/rcs/campaigns/dlc/types/{upsert_dlc_schema_keywords_opt_out.rb → upsert_dlc_campaign_opt_out_keywords.rb} +5 -5
  10. data/lib/rcs/campaigns/dlc/types/{upsert_dlc_schema_options.rb → upsert_dlc_campaign_options.rb} +5 -5
  11. data/lib/rcs/campaigns/dlc/types/{upsert_dlc_schema_use_case.rb → upsert_dlc_campaign_use_case.rb} +5 -5
  12. data/lib/rcs/campaigns/rcs/client.rb +25 -25
  13. data/lib/rcs/campaigns/rcs/types/{upsert_rcs_schema_agent_emails_item.rb → rcs_agent_email.rb} +5 -5
  14. data/lib/rcs/campaigns/rcs/types/{upsert_rcs_schema_agent_phones_item.rb → rcs_agent_phone.rb} +5 -5
  15. data/lib/rcs/campaigns/rcs/types/{upsert_rcs_schema_agent_websites_item.rb → rcs_agent_website.rb} +5 -5
  16. data/lib/rcs/campaigns/rcs/types/{upsert_rcs_schema_agent.rb → upsert_rcs_agent.rb} +17 -17
  17. data/lib/rcs/campaigns/rcs/types/{upsert_rcs_schema_links.rb → upsert_rcs_links.rb} +5 -5
  18. data/lib/rcs/campaigns/rcs/types/{upsert_rcs_schema_opt_in.rb → upsert_rcs_opt_in.rb} +13 -13
  19. data/lib/rcs/campaigns/rcs/types/{upsert_rcs_schema_opt_out.rb → upsert_rcs_opt_out.rb} +5 -5
  20. data/lib/rcs/campaigns/rcs/types/{upsert_rcs_schema_use_case.rb → upsert_rcs_use_case.rb} +5 -5
  21. data/lib/rcs/campaigns/toll_free/client.rb +4 -4
  22. data/lib/rcs/campaigns/toll_free/types/toll_free_autofill_response.rb +10 -10
  23. data/lib/rcs/campaigns/toll_free/types/upsert_toll_free_schema_opt_in.rb +8 -8
  24. data/lib/rcs/conversations/client.rb +2 -2
  25. data/lib/rcs/messages/client.rb +24 -10
  26. data/lib/rcs/messages/mms/client.rb +118 -0
  27. data/lib/rcs/messages/{send/types/send_mms_response.rb → mms/types/mms_send_response.rb} +4 -4
  28. data/lib/rcs/messages/{send/types/send_mms_schema_options.rb → mms/types/send_mms_options.rb} +6 -6
  29. data/lib/rcs/messages/rcs/client.rb +68 -0
  30. data/lib/rcs/messages/{send/types/send_rcs_response.rb → rcs/types/rcs_send_response.rb} +4 -4
  31. data/lib/rcs/messages/sms/client.rb +198 -0
  32. data/lib/rcs/messages/{send/types/send_sms_schema_options.rb → sms/types/send_sms_options.rb} +6 -6
  33. data/lib/rcs/messages/{send/types/send_sms_response.rb → sms/types/sms_send_response.rb} +4 -4
  34. data/lib/rcs/messages/types/{message_reaction_schema_options.rb → react_message_options.rb} +5 -5
  35. data/lib/rcs/phone_numbers/client.rb +18 -18
  36. data/lib/rcs/phone_numbers/types/{phone_details_schema_options_enhanced_contact_info.rb → enhanced_contact_info.rb} +5 -7
  37. data/lib/rcs/phone_numbers/types/{phone_details_schema_options.rb → retrieve_phone_number_details_options.rb} +10 -10
  38. data/lib/rcs/phone_numbers/types/{search_schema_number.rb → search_phone_number_by_digits.rb} +5 -5
  39. data/lib/rcs/phone_numbers/types/{search_schema_location.rb → search_phone_number_by_location.rb} +5 -5
  40. data/lib/rcs/phone_numbers/types/{search_schema_options.rb → search_phone_number_options.rb} +5 -5
  41. data/lib/rcs/phone_numbers/webhook/client.rb +2 -2
  42. data/lib/rcs/tools/file/client.rb +3 -3
  43. data/lib/rcs/tools/file/types/{file_upload_schema_options_download.rb → download_options.rb} +5 -5
  44. data/lib/rcs/tools/file/types/{file_upload_schema_options.rb → upload_file_options.rb} +10 -10
  45. data/lib/rcs/types/{attach_webhook_schema_webhook_id.rb → attach_webhook_by_id_params.rb} +5 -5
  46. data/lib/rcs/types/attach_webhook_params.rb +8 -8
  47. data/lib/rcs/types/{get_conversation_request_id.rb → conversation_by_id_params.rb} +5 -5
  48. data/lib/rcs/types/{get_conversation_request_recipient.rb → conversation_by_participants_params.rb} +5 -5
  49. data/lib/rcs/types/{attach_webhook_schema_name.rb → create_and_attach_webhook_by_url_params.rb} +5 -5
  50. data/lib/rcs/types/get_conversation_params.rb +8 -8
  51. data/lib/rcs/types/link_click_event.rb +8 -8
  52. data/lib/rcs/types/message.rb +8 -8
  53. data/lib/rcs/types/rcs.rb +12 -12
  54. data/lib/rcs/types/rcs_campaign_schema_extra_opt_in.rb +8 -8
  55. data/lib/rcs/types/rcs_campaign_schema_opt_in.rb +8 -8
  56. data/lib/rcs/types/rcs_cards.rb +4 -4
  57. data/lib/rcs/types/rcs_cards_cards_item.rb +4 -4
  58. data/lib/rcs/types/rcs_cards_content.rb +4 -4
  59. data/lib/rcs/types/rcs_cards_content_cards_item.rb +4 -4
  60. data/lib/rcs/types/rcs_media_content.rb +4 -4
  61. data/lib/rcs/types/rcs_text_content.rb +4 -4
  62. data/lib/rcs/types/{rcs_button_content.rb → rich_button.rb} +10 -10
  63. data/lib/rcs/types/{rcs_card.rb → rich_cards_message.rb} +9 -9
  64. data/lib/rcs/types/{rcs_media.rb → rich_media_message.rb} +9 -9
  65. data/lib/rcs/types/{rcs_text.rb → rich_text_message.rb} +9 -9
  66. data/lib/rcs/types/toll_free_campaign.rb +10 -10
  67. data/lib/rcs/types/toll_free_campaign_with_extended_brand_and_status.rb +10 -10
  68. data/lib/rcs/types/{nullable_contact.rb → upsert_contact.rb} +5 -5
  69. data/lib/rcs/types/{toll_free_campaign_schema_opt_in.rb → upsert_toll_free_campaign_opt_in.rb} +13 -13
  70. data/lib/rcs/types/{toll_free_campaign_schema_use_case.rb → upsert_toll_free_campaign_use_case.rb} +5 -5
  71. data/lib/rcs.rb +0 -7
  72. data/lib/requests.rb +2 -2
  73. data/lib/types_export.rb +40 -40
  74. metadata +43 -45
  75. data/lib/rcs/message/client.rb +0 -30
  76. data/lib/rcs/message/sms/client.rb +0 -96
  77. data/lib/rcs/messages/send/client.rb +0 -318
@@ -2,23 +2,31 @@
2
2
 
3
3
  require_relative "../../requests"
4
4
  require_relative "../types/message"
5
- require_relative "types/message_reaction_schema_options"
5
+ require_relative "types/react_message_options"
6
6
  require_relative "../types/reaction_result"
7
- require_relative "send/client"
7
+ require_relative "sms/client"
8
+ require_relative "mms/client"
9
+ require_relative "rcs/client"
8
10
  require "async"
9
11
 
10
12
  module Pinnacle
11
13
  class MessagesClient
12
14
  # @return [Pinnacle::RequestClient]
13
15
  attr_reader :request_client
14
- # @return [Pinnacle::Messages::SendClient]
15
- attr_reader :send
16
+ # @return [Pinnacle::Messages::SmsClient]
17
+ attr_reader :sms
18
+ # @return [Pinnacle::Messages::MmsClient]
19
+ attr_reader :mms
20
+ # @return [Pinnacle::Messages::RcsClient]
21
+ attr_reader :rcs
16
22
 
17
23
  # @param request_client [Pinnacle::RequestClient]
18
24
  # @return [Pinnacle::MessagesClient]
19
25
  def initialize(request_client:)
20
26
  @request_client = request_client
21
- @send = Pinnacle::Messages::SendClient.new(request_client: request_client)
27
+ @sms = Pinnacle::Messages::SmsClient.new(request_client: request_client)
28
+ @mms = Pinnacle::Messages::MmsClient.new(request_client: request_client)
29
+ @rcs = Pinnacle::Messages::RcsClient.new(request_client: request_client)
22
30
  end
23
31
 
24
32
  # Retrieve a previously sent message.
@@ -56,7 +64,7 @@ module Pinnacle
56
64
  # Add or remove an emoji reaction to a previously sent message.
57
65
  #
58
66
  # @param message_id [Integer] Unique identifier of the message.
59
- # @param options [Hash] Request of type Pinnacle::Messages::Types::MessageReactionSchemaOptions, as a Hash
67
+ # @param options [Hash] Request of type Pinnacle::Messages::Types::ReactMessageOptions, as a Hash
60
68
  # * :force (Boolean)
61
69
  # @param reaction [String] Unicode emoji to add. <br>
62
70
  # Use `null` to remove existing reaction.
@@ -100,14 +108,20 @@ module Pinnacle
100
108
  class AsyncMessagesClient
101
109
  # @return [Pinnacle::AsyncRequestClient]
102
110
  attr_reader :request_client
103
- # @return [Pinnacle::Messages::AsyncSendClient]
104
- attr_reader :send
111
+ # @return [Pinnacle::Messages::AsyncSmsClient]
112
+ attr_reader :sms
113
+ # @return [Pinnacle::Messages::AsyncMmsClient]
114
+ attr_reader :mms
115
+ # @return [Pinnacle::Messages::AsyncRcsClient]
116
+ attr_reader :rcs
105
117
 
106
118
  # @param request_client [Pinnacle::AsyncRequestClient]
107
119
  # @return [Pinnacle::AsyncMessagesClient]
108
120
  def initialize(request_client:)
109
121
  @request_client = request_client
110
- @send = Pinnacle::Messages::AsyncSendClient.new(request_client: request_client)
122
+ @sms = Pinnacle::Messages::AsyncSmsClient.new(request_client: request_client)
123
+ @mms = Pinnacle::Messages::AsyncMmsClient.new(request_client: request_client)
124
+ @rcs = Pinnacle::Messages::AsyncRcsClient.new(request_client: request_client)
111
125
  end
112
126
 
113
127
  # Retrieve a previously sent message.
@@ -147,7 +161,7 @@ module Pinnacle
147
161
  # Add or remove an emoji reaction to a previously sent message.
148
162
  #
149
163
  # @param message_id [Integer] Unique identifier of the message.
150
- # @param options [Hash] Request of type Pinnacle::Messages::Types::MessageReactionSchemaOptions, as a Hash
164
+ # @param options [Hash] Request of type Pinnacle::Messages::Types::ReactMessageOptions, as a Hash
151
165
  # * :force (Boolean)
152
166
  # @param reaction [String] Unicode emoji to add. <br>
153
167
  # Use `null` to remove existing reaction.
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "../../../requests"
4
+ require_relative "types/send_mms_options"
5
+ require_relative "types/mms_send_response"
4
6
  require_relative "../../types/mms_content"
5
7
  require_relative "../../types/mms_validation_result"
6
8
  require "async"
@@ -17,6 +19,63 @@ module Pinnacle
17
19
  @request_client = request_client
18
20
  end
19
21
 
22
+ # Send a MMS immediately or schedule it for future delivery.
23
+ #
24
+ # @param from [String] Phone number you want to send the message from in E.164 format.
25
+ # @param media_urls [Array<String>] Media file URLs to send.<br>
26
+ # See [supported media
27
+ # types](https://app.pinnacle.sh/supported-file-types?type=MMS).
28
+ # @param options [Hash] Control how your MMS is processed and delivered.Request of type Pinnacle::Messages::Mms::Types::SendMmsOptions, as a Hash
29
+ # * :multiple_messages (Boolean)
30
+ # * :schedule (Hash)
31
+ # * :end_date (DateTime)
32
+ # * :recurrence (String)
33
+ # * :send_at (String)
34
+ # * :timezone (String)
35
+ # * :tracking (Pinnacle::Types::Tracking)
36
+ # * :validate (Boolean)
37
+ # @param text [String] Message text to accompany the media.
38
+ # @param to [String] Recipient's phone number in E.164 format.
39
+ # @param request_options [Pinnacle::RequestOptions]
40
+ # @return [Pinnacle::Types::SentMmsDetails, Pinnacle::Types::ScheduledMessaage]
41
+ # @example
42
+ # api = Pinnacle::Client.new(
43
+ # base_url: "https://api.example.com",
44
+ # environment: Pinnacle::Environment::DEFAULT,
45
+ # api_key: "YOUR_API_KEY"
46
+ # )
47
+ # api.messages.mms.send_(
48
+ # from: "+14155164736",
49
+ # media_urls: ["https://fastly.picsum.photos/id/941/300/300.jpg?hmac=mDxM9PWSqRDjecwSCEpzU4bj35gqnG7yA25OL29uNv0"],
50
+ # options: { multiple_messages: true, validate: true },
51
+ # text: "Check out this image!",
52
+ # to: "+14154746461"
53
+ # )
54
+ def send_(from:, media_urls:, text:, to:, options: nil, request_options: nil)
55
+ response = @request_client.conn.post do |req|
56
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
57
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
58
+ req.headers = {
59
+ **(req.headers || {}),
60
+ **@request_client.get_headers,
61
+ **(request_options&.additional_headers || {})
62
+ }.compact
63
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
64
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
65
+ end
66
+ req.body = {
67
+ **(request_options&.additional_body_parameters || {}),
68
+ from: from,
69
+ mediaUrls: media_urls,
70
+ options: options,
71
+ text: text,
72
+ to: to
73
+ }.compact
74
+ req.url "#{@request_client.get_url(request_options: request_options)}/messages/send/mms"
75
+ end
76
+ Pinnacle::Messages::Mms::Types::MmsSendResponse.from_json(json_object: response.body)
77
+ end
78
+
20
79
  # Validate MMS message content without sending it.
21
80
  #
22
81
  # @param request [Hash] Request of type Pinnacle::Types::MmsContent, as a Hash
@@ -60,6 +119,65 @@ module Pinnacle
60
119
  @request_client = request_client
61
120
  end
62
121
 
122
+ # Send a MMS immediately or schedule it for future delivery.
123
+ #
124
+ # @param from [String] Phone number you want to send the message from in E.164 format.
125
+ # @param media_urls [Array<String>] Media file URLs to send.<br>
126
+ # See [supported media
127
+ # types](https://app.pinnacle.sh/supported-file-types?type=MMS).
128
+ # @param options [Hash] Control how your MMS is processed and delivered.Request of type Pinnacle::Messages::Mms::Types::SendMmsOptions, as a Hash
129
+ # * :multiple_messages (Boolean)
130
+ # * :schedule (Hash)
131
+ # * :end_date (DateTime)
132
+ # * :recurrence (String)
133
+ # * :send_at (String)
134
+ # * :timezone (String)
135
+ # * :tracking (Pinnacle::Types::Tracking)
136
+ # * :validate (Boolean)
137
+ # @param text [String] Message text to accompany the media.
138
+ # @param to [String] Recipient's phone number in E.164 format.
139
+ # @param request_options [Pinnacle::RequestOptions]
140
+ # @return [Pinnacle::Types::SentMmsDetails, Pinnacle::Types::ScheduledMessaage]
141
+ # @example
142
+ # api = Pinnacle::Client.new(
143
+ # base_url: "https://api.example.com",
144
+ # environment: Pinnacle::Environment::DEFAULT,
145
+ # api_key: "YOUR_API_KEY"
146
+ # )
147
+ # api.messages.mms.send_(
148
+ # from: "+14155164736",
149
+ # media_urls: ["https://fastly.picsum.photos/id/941/300/300.jpg?hmac=mDxM9PWSqRDjecwSCEpzU4bj35gqnG7yA25OL29uNv0"],
150
+ # options: { multiple_messages: true, validate: true },
151
+ # text: "Check out this image!",
152
+ # to: "+14154746461"
153
+ # )
154
+ def send_(from:, media_urls:, text:, to:, options: nil, request_options: nil)
155
+ Async do
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
+ from: from,
170
+ mediaUrls: media_urls,
171
+ options: options,
172
+ text: text,
173
+ to: to
174
+ }.compact
175
+ req.url "#{@request_client.get_url(request_options: request_options)}/messages/send/mms"
176
+ end
177
+ Pinnacle::Messages::Mms::Types::MmsSendResponse.from_json(json_object: response.body)
178
+ end
179
+ end
180
+
63
181
  # Validate MMS message content without sending it.
64
182
  #
65
183
  # @param request [Hash] Request of type Pinnacle::Types::MmsContent, as a Hash
@@ -6,13 +6,13 @@ require_relative "../../../types/scheduled_messaage"
6
6
 
7
7
  module Pinnacle
8
8
  module Messages
9
- module Send
9
+ module Mms
10
10
  module Types
11
- class SendMmsResponse
12
- # Deserialize a JSON object to an instance of SendMmsResponse
11
+ class MmsSendResponse
12
+ # Deserialize a JSON object to an instance of MmsSendResponse
13
13
  #
14
14
  # @param json_object [String]
15
- # @return [Pinnacle::Messages::Send::Types::SendMmsResponse]
15
+ # @return [Pinnacle::Messages::Mms::Types::MmsSendResponse]
16
16
  def self.from_json(json_object:)
17
17
  struct = JSON.parse(json_object, object_class: OpenStruct)
18
18
  begin
@@ -7,10 +7,10 @@ require "json"
7
7
 
8
8
  module Pinnacle
9
9
  module Messages
10
- module Send
10
+ module Mms
11
11
  module Types
12
12
  # Control how your MMS is processed and delivered.
13
- class SendMmsSchemaOptions
13
+ class SendMmsOptions
14
14
  # @return [Boolean] Allow splitting large content into multiple MMS messages if size limits are
15
15
  # exceeded. <br>
16
16
  # If `false`, MMS over the limit will throw an error and won't be sent.
@@ -40,7 +40,7 @@ module Pinnacle
40
40
  # If errors occur, the message is not sent. Otherwise message is sent after
41
41
  # validation.
42
42
  # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
43
- # @return [Pinnacle::Messages::Send::Types::SendMmsSchemaOptions]
43
+ # @return [Pinnacle::Messages::Mms::Types::SendMmsOptions]
44
44
  def initialize(multiple_messages:, validate:, schedule: OMIT, tracking: OMIT, additional_properties: nil)
45
45
  @multiple_messages = multiple_messages
46
46
  @schedule = schedule if schedule != OMIT
@@ -57,10 +57,10 @@ module Pinnacle
57
57
  end
58
58
  end
59
59
 
60
- # Deserialize a JSON object to an instance of SendMmsSchemaOptions
60
+ # Deserialize a JSON object to an instance of SendMmsOptions
61
61
  #
62
62
  # @param json_object [String]
63
- # @return [Pinnacle::Messages::Send::Types::SendMmsSchemaOptions]
63
+ # @return [Pinnacle::Messages::Mms::Types::SendMmsOptions]
64
64
  def self.from_json(json_object:)
65
65
  struct = JSON.parse(json_object, object_class: OpenStruct)
66
66
  parsed_json = JSON.parse(json_object)
@@ -82,7 +82,7 @@ module Pinnacle
82
82
  )
83
83
  end
84
84
 
85
- # Serialize an instance of SendMmsSchemaOptions to a JSON object
85
+ # Serialize an instance of SendMmsOptions to a JSON object
86
86
  #
87
87
  # @return [String]
88
88
  def to_json(*_args)
@@ -1,6 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require_relative "../../../requests"
4
+ require_relative "../../types/rcs"
5
+ require_relative "types/rcs_send_response"
4
6
  require_relative "../../types/rcs_validate_content"
5
7
  require_relative "../../types/rcs_validation_result"
6
8
  require "async"
@@ -17,6 +19,38 @@ module Pinnacle
17
19
  @request_client = request_client
18
20
  end
19
21
 
22
+ # Send a RCS message immediately or schedule it for future delivery. <br>
23
+ # Requires an active RCS agent and recipient devices that support RCS Business
24
+ # Messaging.
25
+ #
26
+ # @param request [Pinnacle::Types::RichTextMessage, Pinnacle::Types::RichMediaMessage, Pinnacle::Types::RichCardsMessage]
27
+ # @param request_options [Pinnacle::RequestOptions]
28
+ # @return [Pinnacle::Types::SentRcsDetails, Pinnacle::Types::ScheduledMessaage]
29
+ # @example
30
+ # api = Pinnacle::Client.new(
31
+ # base_url: "https://api.example.com",
32
+ # environment: Pinnacle::Environment::DEFAULT,
33
+ # api_key: "YOUR_API_KEY"
34
+ # )
35
+ # api.messages.rcs.send_(request: { quick_replies: , text: "text", from: "from", to: "to" })
36
+ def send_(request:, request_options: nil)
37
+ response = @request_client.conn.post do |req|
38
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
39
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
40
+ req.headers = {
41
+ **(req.headers || {}),
42
+ **@request_client.get_headers,
43
+ **(request_options&.additional_headers || {})
44
+ }.compact
45
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
46
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
47
+ end
48
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
49
+ req.url "#{@request_client.get_url(request_options: request_options)}/messages/send/rcs"
50
+ end
51
+ Pinnacle::Messages::Rcs::Types::RcsSendResponse.from_json(json_object: response.body)
52
+ end
53
+
20
54
  # Validate RCS message content without sending it.
21
55
  #
22
56
  # @param request [Pinnacle::Types::RcsTextContent, Pinnacle::Types::RcsValidateContentMedia, Pinnacle::Types::RcsCards]
@@ -58,6 +92,40 @@ module Pinnacle
58
92
  @request_client = request_client
59
93
  end
60
94
 
95
+ # Send a RCS message immediately or schedule it for future delivery. <br>
96
+ # Requires an active RCS agent and recipient devices that support RCS Business
97
+ # Messaging.
98
+ #
99
+ # @param request [Pinnacle::Types::RichTextMessage, Pinnacle::Types::RichMediaMessage, Pinnacle::Types::RichCardsMessage]
100
+ # @param request_options [Pinnacle::RequestOptions]
101
+ # @return [Pinnacle::Types::SentRcsDetails, Pinnacle::Types::ScheduledMessaage]
102
+ # @example
103
+ # api = Pinnacle::Client.new(
104
+ # base_url: "https://api.example.com",
105
+ # environment: Pinnacle::Environment::DEFAULT,
106
+ # api_key: "YOUR_API_KEY"
107
+ # )
108
+ # api.messages.rcs.send_(request: { quick_replies: , text: "text", from: "from", to: "to" })
109
+ def send_(request:, request_options: nil)
110
+ Async do
111
+ response = @request_client.conn.post do |req|
112
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
113
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
114
+ req.headers = {
115
+ **(req.headers || {}),
116
+ **@request_client.get_headers,
117
+ **(request_options&.additional_headers || {})
118
+ }.compact
119
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
120
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
121
+ end
122
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
123
+ req.url "#{@request_client.get_url(request_options: request_options)}/messages/send/rcs"
124
+ end
125
+ Pinnacle::Messages::Rcs::Types::RcsSendResponse.from_json(json_object: response.body)
126
+ end
127
+ end
128
+
61
129
  # Validate RCS message content without sending it.
62
130
  #
63
131
  # @param request [Pinnacle::Types::RcsTextContent, Pinnacle::Types::RcsValidateContentMedia, Pinnacle::Types::RcsCards]
@@ -6,13 +6,13 @@ require_relative "../../../types/scheduled_messaage"
6
6
 
7
7
  module Pinnacle
8
8
  module Messages
9
- module Send
9
+ module Rcs
10
10
  module Types
11
- class SendRcsResponse
12
- # Deserialize a JSON object to an instance of SendRcsResponse
11
+ class RcsSendResponse
12
+ # Deserialize a JSON object to an instance of RcsSendResponse
13
13
  #
14
14
  # @param json_object [String]
15
- # @return [Pinnacle::Messages::Send::Types::SendRcsResponse]
15
+ # @return [Pinnacle::Messages::Rcs::Types::RcsSendResponse]
16
16
  def self.from_json(json_object:)
17
17
  struct = JSON.parse(json_object, object_class: OpenStruct)
18
18
  begin
@@ -0,0 +1,198 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "../../../requests"
4
+ require_relative "types/send_sms_options"
5
+ require_relative "types/sms_send_response"
6
+ require_relative "../../types/sms_content"
7
+ require_relative "../../types/sms_validation_result"
8
+ require "async"
9
+
10
+ module Pinnacle
11
+ module Messages
12
+ class SmsClient
13
+ # @return [Pinnacle::RequestClient]
14
+ attr_reader :request_client
15
+
16
+ # @param request_client [Pinnacle::RequestClient]
17
+ # @return [Pinnacle::Messages::SmsClient]
18
+ def initialize(request_client:)
19
+ @request_client = request_client
20
+ end
21
+
22
+ # Send a SMS message immediately or schedule it for future delivery.
23
+ #
24
+ # @param from [String] Phone number that sends the message in E.164 format.
25
+ # @param options [Hash] Additional settings to customize SMS delivery.Request of type Pinnacle::Messages::Sms::Types::SendSmsOptions, as a Hash
26
+ # * :schedule (Hash)
27
+ # * :end_date (DateTime)
28
+ # * :recurrence (String)
29
+ # * :send_at (String)
30
+ # * :timezone (String)
31
+ # * :tracking (Pinnacle::Types::Tracking)
32
+ # @param text [String] Message content.
33
+ # @param to [String] Recipient's phone number in E.164 format.
34
+ # @param request_options [Pinnacle::RequestOptions]
35
+ # @return [Pinnacle::Types::SentSmsDetails, Pinnacle::Types::ScheduledMessaage]
36
+ # @example
37
+ # api = Pinnacle::Client.new(
38
+ # base_url: "https://api.example.com",
39
+ # environment: Pinnacle::Environment::DEFAULT,
40
+ # api_key: "YOUR_API_KEY"
41
+ # )
42
+ # api.messages.sms.send_(
43
+ # from: "+14155164736",
44
+ # text: "Hey!",
45
+ # to: "+14154746461"
46
+ # )
47
+ def send_(from:, text:, to:, options: nil, request_options: nil)
48
+ response = @request_client.conn.post do |req|
49
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
50
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
51
+ req.headers = {
52
+ **(req.headers || {}),
53
+ **@request_client.get_headers,
54
+ **(request_options&.additional_headers || {})
55
+ }.compact
56
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
57
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
58
+ end
59
+ req.body = {
60
+ **(request_options&.additional_body_parameters || {}),
61
+ from: from,
62
+ options: options,
63
+ text: text,
64
+ to: to
65
+ }.compact
66
+ req.url "#{@request_client.get_url(request_options: request_options)}/messages/send/sms"
67
+ end
68
+ Pinnacle::Messages::Sms::Types::SmsSendResponse.from_json(json_object: response.body)
69
+ end
70
+
71
+ # Validate SMS message content without sending it.
72
+ #
73
+ # @param request [Hash] Request of type Pinnacle::Types::SmsContent, as a Hash
74
+ # * :text (String)
75
+ # @param request_options [Pinnacle::RequestOptions]
76
+ # @return [Pinnacle::Types::SmsValidationResult]
77
+ # @example
78
+ # api = Pinnacle::Client.new(
79
+ # base_url: "https://api.example.com",
80
+ # environment: Pinnacle::Environment::DEFAULT,
81
+ # api_key: "YOUR_API_KEY"
82
+ # )
83
+ # api.messages.sms.validate(request: { text: "Hello from Pinnacle" })
84
+ def validate(request:, request_options: nil)
85
+ response = @request_client.conn.post do |req|
86
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
87
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
88
+ req.headers = {
89
+ **(req.headers || {}),
90
+ **@request_client.get_headers,
91
+ **(request_options&.additional_headers || {})
92
+ }.compact
93
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
94
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
95
+ end
96
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
97
+ req.url "#{@request_client.get_url(request_options: request_options)}/messages/validate/sms"
98
+ end
99
+ Pinnacle::Types::SmsValidationResult.from_json(json_object: response.body)
100
+ end
101
+ end
102
+
103
+ class AsyncSmsClient
104
+ # @return [Pinnacle::AsyncRequestClient]
105
+ attr_reader :request_client
106
+
107
+ # @param request_client [Pinnacle::AsyncRequestClient]
108
+ # @return [Pinnacle::Messages::AsyncSmsClient]
109
+ def initialize(request_client:)
110
+ @request_client = request_client
111
+ end
112
+
113
+ # Send a SMS message immediately or schedule it for future delivery.
114
+ #
115
+ # @param from [String] Phone number that sends the message in E.164 format.
116
+ # @param options [Hash] Additional settings to customize SMS delivery.Request of type Pinnacle::Messages::Sms::Types::SendSmsOptions, as a Hash
117
+ # * :schedule (Hash)
118
+ # * :end_date (DateTime)
119
+ # * :recurrence (String)
120
+ # * :send_at (String)
121
+ # * :timezone (String)
122
+ # * :tracking (Pinnacle::Types::Tracking)
123
+ # @param text [String] Message content.
124
+ # @param to [String] Recipient's phone number in E.164 format.
125
+ # @param request_options [Pinnacle::RequestOptions]
126
+ # @return [Pinnacle::Types::SentSmsDetails, Pinnacle::Types::ScheduledMessaage]
127
+ # @example
128
+ # api = Pinnacle::Client.new(
129
+ # base_url: "https://api.example.com",
130
+ # environment: Pinnacle::Environment::DEFAULT,
131
+ # api_key: "YOUR_API_KEY"
132
+ # )
133
+ # api.messages.sms.send_(
134
+ # from: "+14155164736",
135
+ # text: "Hey!",
136
+ # to: "+14154746461"
137
+ # )
138
+ def send_(from:, text:, to:, options: nil, request_options: nil)
139
+ Async do
140
+ response = @request_client.conn.post do |req|
141
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
142
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
143
+ req.headers = {
144
+ **(req.headers || {}),
145
+ **@request_client.get_headers,
146
+ **(request_options&.additional_headers || {})
147
+ }.compact
148
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
149
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
150
+ end
151
+ req.body = {
152
+ **(request_options&.additional_body_parameters || {}),
153
+ from: from,
154
+ options: options,
155
+ text: text,
156
+ to: to
157
+ }.compact
158
+ req.url "#{@request_client.get_url(request_options: request_options)}/messages/send/sms"
159
+ end
160
+ Pinnacle::Messages::Sms::Types::SmsSendResponse.from_json(json_object: response.body)
161
+ end
162
+ end
163
+
164
+ # Validate SMS message content without sending it.
165
+ #
166
+ # @param request [Hash] Request of type Pinnacle::Types::SmsContent, as a Hash
167
+ # * :text (String)
168
+ # @param request_options [Pinnacle::RequestOptions]
169
+ # @return [Pinnacle::Types::SmsValidationResult]
170
+ # @example
171
+ # api = Pinnacle::Client.new(
172
+ # base_url: "https://api.example.com",
173
+ # environment: Pinnacle::Environment::DEFAULT,
174
+ # api_key: "YOUR_API_KEY"
175
+ # )
176
+ # api.messages.sms.validate(request: { text: "Hello from Pinnacle" })
177
+ def validate(request:, request_options: nil)
178
+ Async do
179
+ response = @request_client.conn.post do |req|
180
+ req.options.timeout = request_options.timeout_in_seconds unless request_options&.timeout_in_seconds.nil?
181
+ req.headers["PINNACLE-API-KEY"] = request_options.api_key unless request_options&.api_key.nil?
182
+ req.headers = {
183
+ **(req.headers || {}),
184
+ **@request_client.get_headers,
185
+ **(request_options&.additional_headers || {})
186
+ }.compact
187
+ unless request_options.nil? || request_options&.additional_query_parameters.nil?
188
+ req.params = { **(request_options&.additional_query_parameters || {}) }.compact
189
+ end
190
+ req.body = { **(request || {}), **(request_options&.additional_body_parameters || {}) }.compact
191
+ req.url "#{@request_client.get_url(request_options: request_options)}/messages/validate/sms"
192
+ end
193
+ Pinnacle::Types::SmsValidationResult.from_json(json_object: response.body)
194
+ end
195
+ end
196
+ end
197
+ end
198
+ end
@@ -7,10 +7,10 @@ require "json"
7
7
 
8
8
  module Pinnacle
9
9
  module Messages
10
- module Send
10
+ module Sms
11
11
  module Types
12
12
  # Additional settings to customize SMS delivery.
13
- class SendSmsSchemaOptions
13
+ class SendSmsOptions
14
14
  # @return [Pinnacle::Types::MessageSchedule]
15
15
  attr_reader :schedule
16
16
  # @return [Pinnacle::Types::Tracking]
@@ -26,7 +26,7 @@ module Pinnacle
26
26
  # @param schedule [Pinnacle::Types::MessageSchedule]
27
27
  # @param tracking [Pinnacle::Types::Tracking]
28
28
  # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
29
- # @return [Pinnacle::Messages::Send::Types::SendSmsSchemaOptions]
29
+ # @return [Pinnacle::Messages::Sms::Types::SendSmsOptions]
30
30
  def initialize(schedule: OMIT, tracking: OMIT, additional_properties: nil)
31
31
  @schedule = schedule if schedule != OMIT
32
32
  @tracking = tracking if tracking != OMIT
@@ -36,10 +36,10 @@ module Pinnacle
36
36
  end
37
37
  end
38
38
 
39
- # Deserialize a JSON object to an instance of SendSmsSchemaOptions
39
+ # Deserialize a JSON object to an instance of SendSmsOptions
40
40
  #
41
41
  # @param json_object [String]
42
- # @return [Pinnacle::Messages::Send::Types::SendSmsSchemaOptions]
42
+ # @return [Pinnacle::Messages::Sms::Types::SendSmsOptions]
43
43
  def self.from_json(json_object:)
44
44
  struct = JSON.parse(json_object, object_class: OpenStruct)
45
45
  parsed_json = JSON.parse(json_object)
@@ -57,7 +57,7 @@ module Pinnacle
57
57
  )
58
58
  end
59
59
 
60
- # Serialize an instance of SendSmsSchemaOptions to a JSON object
60
+ # Serialize an instance of SendSmsOptions to a JSON object
61
61
  #
62
62
  # @return [String]
63
63
  def to_json(*_args)
@@ -6,13 +6,13 @@ require_relative "../../../types/scheduled_messaage"
6
6
 
7
7
  module Pinnacle
8
8
  module Messages
9
- module Send
9
+ module Sms
10
10
  module Types
11
- class SendSmsResponse
12
- # Deserialize a JSON object to an instance of SendSmsResponse
11
+ class SmsSendResponse
12
+ # Deserialize a JSON object to an instance of SmsSendResponse
13
13
  #
14
14
  # @param json_object [String]
15
- # @return [Pinnacle::Messages::Send::Types::SendSmsResponse]
15
+ # @return [Pinnacle::Messages::Sms::Types::SmsSendResponse]
16
16
  def self.from_json(json_object:)
17
17
  struct = JSON.parse(json_object, object_class: OpenStruct)
18
18
  begin