rcs 2.0.13 → 2.0.14

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 (134) hide show
  1. checksums.yaml +4 -4
  2. data/.fern/metadata.json +1 -1
  3. data/.fernignore +2 -1
  4. data/lib/pinnacle/audiences/client.rb +34 -0
  5. data/lib/pinnacle/audiences/types/list_audiences_params.rb +13 -0
  6. data/lib/pinnacle/brands/client.rb +34 -0
  7. data/lib/pinnacle/brands/types/list_brands_params.rb +15 -0
  8. data/lib/pinnacle/brands/types/list_brands_request_status.rb +18 -0
  9. data/lib/pinnacle/campaigns/dlc/client.rb +35 -0
  10. data/lib/pinnacle/campaigns/dlc/types/list_dlc_campaigns_params.rb +17 -0
  11. data/lib/pinnacle/campaigns/dlc/types/list_dlc_campaigns_request_status.rb +18 -0
  12. data/lib/pinnacle/campaigns/rcs/client.rb +35 -0
  13. data/lib/pinnacle/campaigns/rcs/types/list_rcs_campaigns_params.rb +17 -0
  14. data/lib/pinnacle/campaigns/rcs/types/list_rcs_campaigns_request_status.rb +18 -0
  15. data/lib/pinnacle/campaigns/toll_free/client.rb +35 -0
  16. data/lib/pinnacle/campaigns/toll_free/types/list_toll_free_campaigns_params.rb +17 -0
  17. data/lib/pinnacle/campaigns/toll_free/types/list_toll_free_campaigns_request_status.rb +18 -0
  18. data/lib/pinnacle/client.rb +1 -1
  19. data/lib/pinnacle/contacts/client.rb +34 -0
  20. data/lib/pinnacle/contacts/types/list_contacts_params.rb +16 -0
  21. data/lib/pinnacle/internal/types/boolean.rb +1 -1
  22. data/lib/pinnacle/internal/types/utils.rb +2 -2
  23. data/lib/pinnacle/messages/blasts/client.rb +50 -0
  24. data/lib/pinnacle/messages/blasts/types/list_blasts_params.rb +17 -0
  25. data/lib/pinnacle/messages/client.rb +44 -0
  26. data/lib/pinnacle/messages/rcs/types/send_rich_message_response.rb +2 -0
  27. data/lib/pinnacle/messages/rcs/types/send_typing_indicator_schema.rb +0 -1
  28. data/lib/pinnacle/messages/schedules/client.rb +51 -0
  29. data/lib/pinnacle/messages/schedules/types/list_scheduled_messages_params.rb +17 -0
  30. data/lib/pinnacle/messages/schedules/types/list_scheduled_messages_request_schedule_type.rb +16 -0
  31. data/lib/pinnacle/messages/schedules/types/list_scheduled_messages_request_status.rb +17 -0
  32. data/lib/pinnacle/messages/types/list_messages_params.rb +21 -0
  33. data/lib/pinnacle/messages/types/list_messages_request_direction.rb +14 -0
  34. data/lib/pinnacle/messages/types/list_messages_request_method.rb +15 -0
  35. data/lib/pinnacle/messages/types/list_messages_request_status.rb +21 -0
  36. data/lib/pinnacle/messages/types/list_messages_request_type.rb +15 -0
  37. data/lib/pinnacle/phone_numbers/client.rb +34 -0
  38. data/lib/pinnacle/phone_numbers/types/list_phone_numbers_params.rb +12 -0
  39. data/lib/pinnacle/rcs/agents/client.rb +50 -0
  40. data/lib/pinnacle/rcs/agents/types/list_agents_params.rb +16 -0
  41. data/lib/pinnacle/rcs/agents/types/list_agents_request_agent_type.rb +16 -0
  42. data/lib/pinnacle/rcs/client.rb +34 -44
  43. data/lib/pinnacle/rcs/test/client.rb +275 -0
  44. data/lib/pinnacle/rcs/test/types/create_test_agent_request.rb +24 -0
  45. data/lib/pinnacle/rcs/test/types/test_agent_whitelist_request.rb +14 -0
  46. data/lib/pinnacle/rcs/test/types/test_get_whitelist_status_request.rb +14 -0
  47. data/lib/pinnacle/rcs/test/types/update_test_agent_request.rb +25 -0
  48. data/lib/pinnacle/rcs/types/rcs_capabilities_query.rb +1 -0
  49. data/lib/pinnacle/rcs/types/rcs_link_request.rb +0 -1
  50. data/lib/pinnacle/rcs/whitelisted_numbers/client.rb +51 -0
  51. data/lib/pinnacle/rcs/whitelisted_numbers/types/list_test_numbers_params.rb +17 -0
  52. data/lib/pinnacle/rcs/whitelisted_numbers/types/list_test_numbers_request_status.rb +17 -0
  53. data/lib/pinnacle/tools/url/client.rb +34 -0
  54. data/lib/pinnacle/tools/url/types/list_links_params.rb +15 -0
  55. data/lib/pinnacle/types/agent_email_entry.rb +11 -0
  56. data/lib/pinnacle/types/agent_phone_entry.rb +11 -0
  57. data/lib/pinnacle/types/agent_summary.rb +15 -0
  58. data/lib/pinnacle/types/agent_summary_agent_type.rb +12 -0
  59. data/lib/pinnacle/types/agent_summary_carrier_launches.rb +13 -0
  60. data/lib/pinnacle/types/agent_summary_config.rb +21 -0
  61. data/lib/pinnacle/types/agent_summary_config_agent_use_case.rb +14 -0
  62. data/lib/pinnacle/types/agent_summary_config_emails_item.rb +10 -0
  63. data/lib/pinnacle/types/agent_summary_config_phones_item.rb +10 -0
  64. data/lib/pinnacle/types/agent_summary_config_websites_item.rb +10 -0
  65. data/lib/pinnacle/types/agent_use_case.rb +14 -0
  66. data/lib/pinnacle/types/agent_website_entry.rb +11 -0
  67. data/lib/pinnacle/types/audience_summary.rb +13 -0
  68. data/lib/pinnacle/types/blast_summary.rb +16 -0
  69. data/lib/pinnacle/types/blast_summary_type.rb +13 -0
  70. data/lib/pinnacle/types/carrier_launch_status.rb +13 -0
  71. data/lib/pinnacle/types/carrier_launches.rb +13 -0
  72. data/lib/pinnacle/types/dlc_campaign_summary.rb +15 -0
  73. data/lib/pinnacle/types/dlc_campaign_summary_status.rb +14 -0
  74. data/lib/pinnacle/types/fallback_message.rb +5 -3
  75. data/lib/pinnacle/types/link_summary.rb +12 -0
  76. data/lib/pinnacle/types/list_agents_response.rb +11 -0
  77. data/lib/pinnacle/types/list_audiences_response.rb +11 -0
  78. data/lib/pinnacle/types/list_blasts_response.rb +11 -0
  79. data/lib/pinnacle/types/list_brands_response.rb +11 -0
  80. data/lib/pinnacle/types/list_contacts_response.rb +11 -0
  81. data/lib/pinnacle/types/list_dlc_campaigns_response.rb +11 -0
  82. data/lib/pinnacle/types/list_links_response.rb +11 -0
  83. data/lib/pinnacle/types/list_messages_response.rb +11 -0
  84. data/lib/pinnacle/types/list_phone_numbers_response.rb +11 -0
  85. data/lib/pinnacle/types/list_rcs_campaigns_response.rb +11 -0
  86. data/lib/pinnacle/types/list_scheduled_messages_response.rb +11 -0
  87. data/lib/pinnacle/types/list_test_numbers_response.rb +11 -0
  88. data/lib/pinnacle/types/list_toll_free_campaigns_response.rb +11 -0
  89. data/lib/pinnacle/types/list_webhooks_response.rb +11 -0
  90. data/lib/pinnacle/types/message.rb +0 -1
  91. data/lib/pinnacle/types/message_event.rb +2 -1
  92. data/lib/pinnacle/types/message_event_fallback_message.rb +6 -6
  93. data/lib/pinnacle/types/message_list.rb +1 -1
  94. data/lib/pinnacle/types/message_summary.rb +25 -0
  95. data/lib/pinnacle/types/{message_with_reaction_direction.rb → message_summary_direction.rb} +1 -1
  96. data/lib/pinnacle/types/message_summary_method.rb +13 -0
  97. data/lib/pinnacle/types/message_summary_status.rb +19 -0
  98. data/lib/pinnacle/types/message_summary_type.rb +13 -0
  99. data/lib/pinnacle/types/message_with_reactions.rb +11 -0
  100. data/lib/pinnacle/types/message_with_reactions_direction.rb +12 -0
  101. data/lib/pinnacle/types/owned_phone_number.rb +14 -0
  102. data/lib/pinnacle/types/rcs_agent_details.rb +21 -0
  103. data/lib/pinnacle/types/rcs_agent_details_agent_use_case.rb +14 -0
  104. data/lib/pinnacle/types/rcs_agent_details_emails_item.rb +10 -0
  105. data/lib/pinnacle/types/rcs_agent_details_phones_item.rb +10 -0
  106. data/lib/pinnacle/types/rcs_agent_details_websites_item.rb +10 -0
  107. data/lib/pinnacle/types/rcs_agent_response.rb +14 -0
  108. data/lib/pinnacle/types/rcs_campaign_summary.rb +16 -0
  109. data/lib/pinnacle/types/rcs_campaign_summary_status.rb +14 -0
  110. data/lib/pinnacle/types/rcs_whitelist_status.rb +13 -0
  111. data/lib/pinnacle/types/scheduled_message_summary.rb +17 -0
  112. data/lib/pinnacle/types/scheduled_message_summary_status.rb +13 -0
  113. data/lib/pinnacle/types/send_rich_message_options.rb +0 -1
  114. data/lib/pinnacle/types/sent_rich_message_fallback_mms.rb +13 -0
  115. data/lib/pinnacle/types/sent_rich_message_fallback_sms.rb +13 -0
  116. data/lib/pinnacle/types/test_agent_response.rb +13 -0
  117. data/lib/pinnacle/types/test_agent_whitelist_response.rb +10 -0
  118. data/lib/pinnacle/types/toll_free_campaign_summary.rb +15 -0
  119. data/lib/pinnacle/types/toll_free_campaign_summary_status.rb +14 -0
  120. data/lib/pinnacle/types/webhook_summary.rb +14 -0
  121. data/lib/pinnacle/types/webhook_summary_status.rb +13 -0
  122. data/lib/pinnacle/types/whitelisted_number_summary.rb +12 -0
  123. data/lib/pinnacle/types/whitelisted_number_summary_status.rb +13 -0
  124. data/lib/pinnacle/version.rb +1 -1
  125. data/lib/pinnacle/webhooks/client.rb +34 -0
  126. data/lib/pinnacle/webhooks/types/list_webhooks_params.rb +14 -0
  127. data/lib/pinnacle/webhooks/types/list_webhooks_request_status.rb +15 -0
  128. data/lib/pinnacle.rb +95 -6
  129. data/reference.md +2138 -250
  130. metadata +101 -7
  131. data/lib/pinnacle/messages/rcs/types/send_typing_indicator_schema_options.rb +0 -14
  132. data/lib/pinnacle/rcs/types/rcs_whitelist_request.rb +0 -12
  133. data/lib/pinnacle/types/message_with_reaction.rb +0 -11
  134. data/lib/pinnacle/types/rcs_whitelist_response.rb +0 -10
@@ -0,0 +1,275 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Rcs
5
+ module Test
6
+ class Client
7
+ # @param client [Pinnacle::Internal::Http::RawClient]
8
+ #
9
+ # @return [void]
10
+ def initialize(client:)
11
+ @client = client
12
+ end
13
+
14
+ # Create a new RCS test agent for development and testing.
15
+ #
16
+ # ## Overview
17
+ #
18
+ # Test agents let you build and test full RCS functionality — rich cards, carousels, buttons,
19
+ # quick replies, and media messages — without going through the full carrier review process.
20
+ # Messages from test agents can only be sent to [whitelisted phone
21
+ # numbers](/api-reference/rcs-agents/test/whitelist-number).
22
+ #
23
+ # ## Limits
24
+ #
25
+ # - **Maximum 5 test agents per account.**
26
+ #
27
+ # ## Image Requirements
28
+ #
29
+ # | Image | Format | Max Size |
30
+ # |-------|--------|----------|
31
+ # | Logo | JPEG, PNG | 50 KB |
32
+ # | Hero | JPEG, PNG | 200 KB |
33
+ #
34
+ # ## After Creation
35
+ #
36
+ # Once your test agent is created, you'll need to:
37
+ #
38
+ # 1. **Whitelist test phone numbers** using [`POST
39
+ # /rcs/test/agents/{agentId}/whitelist`](/api-reference/rcs-agents/test/whitelist-number).
40
+ # 2. **Accept the tester invite** on each whitelisted device.
41
+ # 3. **Send messages** using [`POST /messages/send/rcs`](/api-reference/messages/send-rcs) with the returned
42
+ # agent ID as the `from` field.
43
+ #
44
+ # > **2-Minute Cooldown**
45
+ # >
46
+ # > After creating a test agent, there is a mandatory 2-minute cooldown before you can whitelist phone numbers.
47
+ # > This is a requirement imposed by Google's RBM platform.
48
+ #
49
+ # @param request_options [Hash]
50
+ # @param params [Pinnacle::Rcs::Test::Types::CreateTestAgentRequest]
51
+ # @option request_options [String] :base_url
52
+ # @option request_options [Hash{String => Object}] :additional_headers
53
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
54
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
55
+ # @option request_options [Integer] :timeout_in_seconds
56
+ #
57
+ # @return [Pinnacle::Types::TestAgentResponse]
58
+ def create_agent(request_options: {}, **params)
59
+ params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
60
+ request = Pinnacle::Internal::JSON::Request.new(
61
+ base_url: request_options[:base_url],
62
+ method: "POST",
63
+ path: "rcs/test/agents",
64
+ body: Pinnacle::Rcs::Test::Types::CreateTestAgentRequest.new(params).to_h,
65
+ request_options: request_options
66
+ )
67
+ begin
68
+ response = @client.send(request)
69
+ rescue Net::HTTPRequestTimeout
70
+ raise Pinnacle::Errors::TimeoutError
71
+ end
72
+ code = response.code.to_i
73
+ if code.between?(200, 299)
74
+ Pinnacle::Types::TestAgentResponse.load(response.body)
75
+ else
76
+ error_class = Pinnacle::Errors::ResponseError.subclass_for_code(code)
77
+ raise error_class.new(response.body, code: code)
78
+ end
79
+ end
80
+
81
+ # Update an existing RCS test agent's configuration.
82
+ #
83
+ # All fields are optional — only include the fields you want to update.
84
+ #
85
+ # ## Image Requirements
86
+ #
87
+ # If updating images, the same requirements apply as when creating an agent:
88
+ #
89
+ # | Image | Format | Max Size |
90
+ # |-------|--------|----------|
91
+ # | Logo | JPEG, PNG | 50 KB |
92
+ # | Hero | JPEG, PNG | 200 KB |
93
+ #
94
+ # > **2-Minute Cooldown**
95
+ # >
96
+ # > After updating a test agent, there is a mandatory 2-minute cooldown before you can whitelist phone numbers.
97
+ # > This is a requirement imposed by Google's RBM platform.
98
+ #
99
+ # @param request_options [Hash]
100
+ # @param params [Pinnacle::Rcs::Test::Types::UpdateTestAgentRequest]
101
+ # @option request_options [String] :base_url
102
+ # @option request_options [Hash{String => Object}] :additional_headers
103
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
104
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
105
+ # @option request_options [Integer] :timeout_in_seconds
106
+ # @option params [String] :agent_id
107
+ #
108
+ # @return [Pinnacle::Types::TestAgentResponse]
109
+ def update_agent(request_options: {}, **params)
110
+ params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
111
+ request_data = Pinnacle::Rcs::Test::Types::UpdateTestAgentRequest.new(params).to_h
112
+ non_body_param_names = ["agentId"]
113
+ body = request_data.except(*non_body_param_names)
114
+
115
+ request = Pinnacle::Internal::JSON::Request.new(
116
+ base_url: request_options[:base_url],
117
+ method: "PATCH",
118
+ path: "rcs/test/agents/#{params[:agent_id]}",
119
+ body: body,
120
+ request_options: request_options
121
+ )
122
+ begin
123
+ response = @client.send(request)
124
+ rescue Net::HTTPRequestTimeout
125
+ raise Pinnacle::Errors::TimeoutError
126
+ end
127
+ code = response.code.to_i
128
+ if code.between?(200, 299)
129
+ Pinnacle::Types::TestAgentResponse.load(response.body)
130
+ else
131
+ error_class = Pinnacle::Errors::ResponseError.subclass_for_code(code)
132
+ raise error_class.new(response.body, code: code)
133
+ end
134
+ end
135
+
136
+ # Whitelist a phone number for testing with a specific test agent.
137
+ #
138
+ # During development and testing, RCS agents can only send messages to whitelisted phone numbers.
139
+ # Use this endpoint to whitelist specific phone numbers so you can send and receive messages from the test
140
+ # agent.
141
+ #
142
+ # ## Verification Process
143
+ #
144
+ # After whitelisting, the recipient must accept the tester invite:
145
+ #
146
+ # 1. The recipient's device will receive a message from "RBM Tester Management".
147
+ # 2. The recipient must tap "Make me a tester" to accept.
148
+ # 3. Once accepted, the status transitions from `PENDING` to `ACCEPTED`.
149
+ #
150
+ # ## Verification
151
+ #
152
+ # <div style="display: flex; gap: 16px;">
153
+ # <div style="flex: 1; text-align: center;">
154
+ # <strong>Accepting the invite</strong><br/>
155
+ # <img src="https://pncl.to/f769cAvCbEx-MmezZjR6dz6KVkr5ZO" alt="Accepting the tester invite" style="max-width:
156
+ # 100%;" />
157
+ # </div>
158
+ # <div style="flex: 1; text-align: center;">
159
+ # <strong>Declining the invite</strong><br/>
160
+ # <img src="https://pncl.to/VRere3tEKfx4n0HNaxK-vwl7pbLHTJ" alt="Declining the tester invite" style="max-width:
161
+ # 100%;" />
162
+ # </div>
163
+ # </div>
164
+ #
165
+ # ## Cooldown
166
+ #
167
+ # There is a **2-minute cooldown** after creating or updating a test agent before you can whitelist numbers.
168
+ # Attempting to whitelist during the cooldown returns a `500` error with the remaining wait time.
169
+ #
170
+ # @param request_options [Hash]
171
+ # @param params [Pinnacle::Rcs::Test::Types::TestAgentWhitelistRequest]
172
+ # @option request_options [String] :base_url
173
+ # @option request_options [Hash{String => Object}] :additional_headers
174
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
175
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
176
+ # @option request_options [Integer] :timeout_in_seconds
177
+ # @option params [String] :agent_id
178
+ #
179
+ # @return [Pinnacle::Types::TestAgentWhitelistResponse]
180
+ def whitelist_number(request_options: {}, **params)
181
+ params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
182
+ request_data = Pinnacle::Rcs::Test::Types::TestAgentWhitelistRequest.new(params).to_h
183
+ non_body_param_names = ["agentId"]
184
+ body = request_data.except(*non_body_param_names)
185
+
186
+ request = Pinnacle::Internal::JSON::Request.new(
187
+ base_url: request_options[:base_url],
188
+ method: "POST",
189
+ path: "rcs/test/agents/#{params[:agent_id]}/whitelist",
190
+ body: body,
191
+ request_options: request_options
192
+ )
193
+ begin
194
+ response = @client.send(request)
195
+ rescue Net::HTTPRequestTimeout
196
+ raise Pinnacle::Errors::TimeoutError
197
+ end
198
+ code = response.code.to_i
199
+ if code.between?(200, 299)
200
+ Pinnacle::Types::TestAgentWhitelistResponse.load(response.body)
201
+ else
202
+ error_class = Pinnacle::Errors::ResponseError.subclass_for_code(code)
203
+ raise error_class.new(response.body, code: code)
204
+ end
205
+ end
206
+
207
+ # Check the current whitelist status of a phone number for a specific test agent.
208
+ #
209
+ # Use this endpoint to poll the status of a previously whitelisted number and determine
210
+ # whether the recipient has accepted or rejected the tester invite.
211
+ #
212
+ # ## Status Values
213
+ #
214
+ # - **`PENDING`** — The tester invite was sent but the recipient has not yet responded. Ask the recipient to
215
+ # check their messages and accept the invite.
216
+ # - **`ACCEPTED`** — The recipient accepted the invite. Messages can be exchanged.
217
+ # - **`REJECTED`** — The recipient rejected the invite or the invite could not be delivered since the carrier
218
+ # does not support test agents. If the user rejected the invite, they can accept it again by tapping "Make me a
219
+ # tester" in the same message from "RBM Tester Management".
220
+ #
221
+ # <div style="display: flex; gap: 16px;">
222
+ # <div style="flex: 1; text-align: center;">
223
+ # <strong>Accepting the invite</strong><br/>
224
+ # <img src="https://pncl.to/f769cAvCbEx-MmezZjR6dz6KVkr5ZO" alt="Accepting the tester invite" style="max-width:
225
+ # 100%;" />
226
+ # </div>
227
+ # <div style="flex: 1; text-align: center;">
228
+ # <strong>Declining the invite</strong><br/>
229
+ # <img src="https://pncl.to/VRere3tEKfx4n0HNaxK-vwl7pbLHTJ" alt="Declining the tester invite" style="max-width:
230
+ # 100%;" />
231
+ # </div>
232
+ # </div>
233
+ #
234
+ # @param request_options [Hash]
235
+ # @param params [Hash]
236
+ # @option request_options [String] :base_url
237
+ # @option request_options [Hash{String => Object}] :additional_headers
238
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
239
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
240
+ # @option request_options [Integer] :timeout_in_seconds
241
+ # @option params [String] :agent_id
242
+ # @option params [String] :phone_number
243
+ #
244
+ # @return [Pinnacle::Types::TestAgentWhitelistResponse]
245
+ def get_whitelist_status(request_options: {}, **params)
246
+ params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
247
+ query_param_names = %i[phone_number]
248
+ query_params = {}
249
+ query_params["phoneNumber"] = params[:phone_number] if params.key?(:phone_number)
250
+ params = params.except(*query_param_names)
251
+
252
+ request = Pinnacle::Internal::JSON::Request.new(
253
+ base_url: request_options[:base_url],
254
+ method: "GET",
255
+ path: "rcs/test/agents/#{params[:agent_id]}/numbers",
256
+ query: query_params,
257
+ request_options: request_options
258
+ )
259
+ begin
260
+ response = @client.send(request)
261
+ rescue Net::HTTPRequestTimeout
262
+ raise Pinnacle::Errors::TimeoutError
263
+ end
264
+ code = response.code.to_i
265
+ if code.between?(200, 299)
266
+ Pinnacle::Types::TestAgentWhitelistResponse.load(response.body)
267
+ else
268
+ error_class = Pinnacle::Errors::ResponseError.subclass_for_code(code)
269
+ raise error_class.new(response.body, code: code)
270
+ end
271
+ end
272
+ end
273
+ end
274
+ end
275
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Rcs
5
+ module Test
6
+ module Types
7
+ class CreateTestAgentRequest < Internal::Types::Model
8
+ field :display_name, -> { String }, optional: false, nullable: false, api_name: "displayName"
9
+ field :description, -> { String }, optional: false, nullable: false
10
+ field :logo_url, -> { String }, optional: false, nullable: false, api_name: "logoUrl"
11
+ field :hero_url, -> { String }, optional: false, nullable: false, api_name: "heroUrl"
12
+ field :phone_numbers, -> { Internal::Types::Array[Pinnacle::Types::AgentPhoneEntry] }, optional: false, nullable: false, api_name: "phoneNumbers"
13
+ field :emails, -> { Internal::Types::Array[Pinnacle::Types::AgentEmailEntry] }, optional: false, nullable: false
14
+ field :websites, -> { Internal::Types::Array[Pinnacle::Types::AgentWebsiteEntry] }, optional: false, nullable: false
15
+ field :privacy_url, -> { String }, optional: false, nullable: false, api_name: "privacyUrl"
16
+ field :terms_url, -> { String }, optional: false, nullable: false, api_name: "termsUrl"
17
+ field :color, -> { String }, optional: false, nullable: false
18
+ field :is_conversational, -> { Internal::Types::Boolean }, optional: false, nullable: false, api_name: "isConversational"
19
+ field :agent_use_case, -> { Pinnacle::Types::AgentUseCase }, optional: true, nullable: false, api_name: "agentUseCase"
20
+ end
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Rcs
5
+ module Test
6
+ module Types
7
+ class TestAgentWhitelistRequest < Internal::Types::Model
8
+ field :agent_id, -> { String }, optional: false, nullable: false, api_name: "agentId"
9
+ field :phone_number, -> { String }, optional: false, nullable: false, api_name: "phoneNumber"
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Rcs
5
+ module Test
6
+ module Types
7
+ class TestGetWhitelistStatusRequest < Internal::Types::Model
8
+ field :agent_id, -> { String }, optional: false, nullable: false, api_name: "agentId"
9
+ field :phone_number, -> { String }, optional: false, nullable: false, api_name: "phoneNumber"
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Rcs
5
+ module Test
6
+ module Types
7
+ class UpdateTestAgentRequest < Internal::Types::Model
8
+ field :agent_id, -> { String }, optional: false, nullable: false, api_name: "agentId"
9
+ field :display_name, -> { String }, optional: true, nullable: false, api_name: "displayName"
10
+ field :description, -> { String }, optional: true, nullable: false
11
+ field :logo_url, -> { String }, optional: true, nullable: false, api_name: "logoUrl"
12
+ field :hero_url, -> { String }, optional: true, nullable: false, api_name: "heroUrl"
13
+ field :phone_numbers, -> { Internal::Types::Array[Pinnacle::Types::AgentPhoneEntry] }, optional: true, nullable: false, api_name: "phoneNumbers"
14
+ field :emails, -> { Internal::Types::Array[Pinnacle::Types::AgentEmailEntry] }, optional: true, nullable: false
15
+ field :websites, -> { Internal::Types::Array[Pinnacle::Types::AgentWebsiteEntry] }, optional: true, nullable: false
16
+ field :privacy_url, -> { String }, optional: true, nullable: false, api_name: "privacyUrl"
17
+ field :terms_url, -> { String }, optional: true, nullable: false, api_name: "termsUrl"
18
+ field :color, -> { String }, optional: true, nullable: false
19
+ field :is_conversational, -> { Internal::Types::Boolean }, optional: true, nullable: false, api_name: "isConversational"
20
+ field :agent_use_case, -> { Pinnacle::Types::AgentUseCase }, optional: true, nullable: false, api_name: "agentUseCase"
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -5,6 +5,7 @@ module Pinnacle
5
5
  module Types
6
6
  class RcsCapabilitiesQuery < Internal::Types::Model
7
7
  field :phone_numbers, -> { Internal::Types::Array[String] }, optional: false, nullable: false, api_name: "phoneNumbers"
8
+ field :agent_id, -> { String }, optional: true, nullable: false, api_name: "agentId"
8
9
  end
9
10
  end
10
11
  end
@@ -5,7 +5,6 @@ module Pinnacle
5
5
  module Types
6
6
  class RcsLinkRequest < Internal::Types::Model
7
7
  field :agent_id, -> { String }, optional: false, nullable: false, api_name: "agentId"
8
- field :test_mode, -> { Internal::Types::Boolean }, optional: true, nullable: false, api_name: "testMode"
9
8
  field :phone_number, -> { String }, optional: true, nullable: false, api_name: "phoneNumber"
10
9
  field :body, -> { String }, optional: true, nullable: false
11
10
  end
@@ -0,0 +1,51 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Rcs
5
+ module WhitelistedNumbers
6
+ class Client
7
+ # @param client [Pinnacle::Internal::Http::RawClient]
8
+ #
9
+ # @return [void]
10
+ def initialize(client:)
11
+ @client = client
12
+ end
13
+
14
+ # List all whitelisted test numbers with optional filtering and pagination. Results are sorted by creation date,
15
+ # newest first.
16
+ #
17
+ # @param request_options [Hash]
18
+ # @param params [Pinnacle::Rcs::WhitelistedNumbers::Types::ListTestNumbersParams]
19
+ # @option request_options [String] :base_url
20
+ # @option request_options [Hash{String => Object}] :additional_headers
21
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
22
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
23
+ # @option request_options [Integer] :timeout_in_seconds
24
+ #
25
+ # @return [Pinnacle::Types::ListTestNumbersResponse]
26
+ def list(request_options: {}, **params)
27
+ params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
28
+ request = Pinnacle::Internal::JSON::Request.new(
29
+ base_url: request_options[:base_url],
30
+ method: "POST",
31
+ path: "rcs/test/numbers/list",
32
+ body: Pinnacle::Rcs::WhitelistedNumbers::Types::ListTestNumbersParams.new(params).to_h,
33
+ request_options: request_options
34
+ )
35
+ begin
36
+ response = @client.send(request)
37
+ rescue Net::HTTPRequestTimeout
38
+ raise Pinnacle::Errors::TimeoutError
39
+ end
40
+ code = response.code.to_i
41
+ if code.between?(200, 299)
42
+ Pinnacle::Types::ListTestNumbersResponse.load(response.body)
43
+ else
44
+ error_class = Pinnacle::Errors::ResponseError.subclass_for_code(code)
45
+ raise error_class.new(response.body, code: code)
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Rcs
5
+ module WhitelistedNumbers
6
+ module Types
7
+ class ListTestNumbersParams < Internal::Types::Model
8
+ field :page_index, -> { Integer }, optional: true, nullable: false, api_name: "pageIndex"
9
+ field :page_size, -> { Integer }, optional: true, nullable: false, api_name: "pageSize"
10
+ field :agent_id, -> { String }, optional: true, nullable: false, api_name: "agentId"
11
+ field :number, -> { String }, optional: true, nullable: false
12
+ field :status, -> { Pinnacle::Rcs::WhitelistedNumbers::Types::ListTestNumbersRequestStatus }, optional: true, nullable: false
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Rcs
5
+ module WhitelistedNumbers
6
+ module Types
7
+ module ListTestNumbersRequestStatus
8
+ extend Pinnacle::Internal::Types::Enum
9
+
10
+ ACCEPTED = "ACCEPTED"
11
+ REJECTED = "REJECTED"
12
+ PENDING = "PENDING"
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -118,6 +118,40 @@ module Pinnacle
118
118
  raise error_class.new(response.body, code: code)
119
119
  end
120
120
  end
121
+
122
+ # List all shortened URLs with pagination. Results are sorted by creation date, newest first.
123
+ #
124
+ # @param request_options [Hash]
125
+ # @param params [Pinnacle::Tools::Url::Types::ListLinksParams]
126
+ # @option request_options [String] :base_url
127
+ # @option request_options [Hash{String => Object}] :additional_headers
128
+ # @option request_options [Hash{String => Object}] :additional_query_parameters
129
+ # @option request_options [Hash{String => Object}] :additional_body_parameters
130
+ # @option request_options [Integer] :timeout_in_seconds
131
+ #
132
+ # @return [Pinnacle::Types::ListLinksResponse]
133
+ def list(request_options: {}, **params)
134
+ params = Pinnacle::Internal::Types::Utils.normalize_keys(params)
135
+ request = Pinnacle::Internal::JSON::Request.new(
136
+ base_url: request_options[:base_url],
137
+ method: "POST",
138
+ path: "tools/url/list",
139
+ body: Pinnacle::Tools::Url::Types::ListLinksParams.new(params).to_h,
140
+ request_options: request_options
141
+ )
142
+ begin
143
+ response = @client.send(request)
144
+ rescue Net::HTTPRequestTimeout
145
+ raise Pinnacle::Errors::TimeoutError
146
+ end
147
+ code = response.code.to_i
148
+ if code.between?(200, 299)
149
+ Pinnacle::Types::ListLinksResponse.load(response.body)
150
+ else
151
+ error_class = Pinnacle::Errors::ResponseError.subclass_for_code(code)
152
+ raise error_class.new(response.body, code: code)
153
+ end
154
+ end
121
155
  end
122
156
  end
123
157
  end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Tools
5
+ module Url
6
+ module Types
7
+ class ListLinksParams < Internal::Types::Model
8
+ field :page_index, -> { Integer }, optional: true, nullable: false, api_name: "pageIndex"
9
+ field :page_size, -> { Integer }, optional: true, nullable: false, api_name: "pageSize"
10
+ field :endpoint, -> { String }, optional: true, nullable: false
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Types
5
+ # An email contact entry for the RCS agent's contact information.
6
+ class AgentEmailEntry < Internal::Types::Model
7
+ field :address, -> { String }, optional: false, nullable: false
8
+ field :label, -> { String }, optional: false, nullable: false
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Types
5
+ # A phone number contact entry for the RCS agent's contact information.
6
+ class AgentPhoneEntry < Internal::Types::Model
7
+ field :number, -> { String }, optional: false, nullable: false
8
+ field :label, -> { String }, optional: false, nullable: false
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Types
5
+ class AgentSummary < Internal::Types::Model
6
+ field :agent_id, -> { String }, optional: false, nullable: false, api_name: "agentId"
7
+ field :agent_type, -> { Pinnacle::Types::AgentSummaryAgentType }, optional: false, nullable: false, api_name: "agentType"
8
+ field :service_id, -> { String }, optional: true, nullable: false, api_name: "serviceId"
9
+ field :carrier_launches, -> { Pinnacle::Types::AgentSummaryCarrierLaunches }, optional: true, nullable: false, api_name: "carrierLaunches"
10
+ field :config, -> { Pinnacle::Types::AgentSummaryConfig }, optional: true, nullable: false
11
+ field :created_at, -> { String }, optional: false, nullable: false, api_name: "createdAt"
12
+ field :updated_at, -> { String }, optional: false, nullable: false, api_name: "updatedAt"
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Types
5
+ module AgentSummaryAgentType
6
+ extend Pinnacle::Internal::Types::Enum
7
+
8
+ PRODUCTION = "PRODUCTION"
9
+ TEST = "TEST"
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Types
5
+ # Per-carrier launch status for the agent.
6
+ class AgentSummaryCarrierLaunches < Internal::Types::Model
7
+ field :att, -> { Internal::Types::Boolean }, optional: true, nullable: false, api_name: "ATT"
8
+ field :others, -> { Internal::Types::Boolean }, optional: true, nullable: false, api_name: "OTHERS"
9
+ field :tmobile, -> { Internal::Types::Boolean }, optional: true, nullable: false, api_name: "TMOBILE"
10
+ field :verizon, -> { Internal::Types::Boolean }, optional: true, nullable: false, api_name: "VERIZON"
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Types
5
+ # Agent configuration details.
6
+ class AgentSummaryConfig < Internal::Types::Model
7
+ field :name, -> { String }, optional: true, nullable: false
8
+ field :description, -> { String }, optional: true, nullable: false
9
+ field :color, -> { String }, optional: true, nullable: false
10
+ field :websites, -> { Internal::Types::Array[Pinnacle::Types::AgentSummaryConfigWebsitesItem] }, optional: true, nullable: false
11
+ field :phones, -> { Internal::Types::Array[Pinnacle::Types::AgentSummaryConfigPhonesItem] }, optional: true, nullable: false
12
+ field :emails, -> { Internal::Types::Array[Pinnacle::Types::AgentSummaryConfigEmailsItem] }, optional: true, nullable: false
13
+ field :icon_url, -> { String }, optional: true, nullable: false, api_name: "iconUrl"
14
+ field :hero_url, -> { String }, optional: true, nullable: false, api_name: "heroUrl"
15
+ field :privacy_url, -> { String }, optional: true, nullable: false, api_name: "privacyUrl"
16
+ field :terms_url, -> { String }, optional: true, nullable: false, api_name: "termsUrl"
17
+ field :is_conversational, -> { Internal::Types::Boolean }, optional: true, nullable: false, api_name: "isConversational"
18
+ field :agent_use_case, -> { Pinnacle::Types::AgentSummaryConfigAgentUseCase }, optional: true, nullable: false, api_name: "agentUseCase"
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Types
5
+ module AgentSummaryConfigAgentUseCase
6
+ extend Pinnacle::Internal::Types::Enum
7
+
8
+ TRANSACTIONAL = "TRANSACTIONAL"
9
+ PROMOTIONAL = "PROMOTIONAL"
10
+ OTP = "OTP"
11
+ MULTI_USE = "MULTI_USE"
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Types
5
+ class AgentSummaryConfigEmailsItem < Internal::Types::Model
6
+ field :email, -> { String }, optional: true, nullable: false
7
+ field :label, -> { String }, optional: true, nullable: false
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Types
5
+ class AgentSummaryConfigPhonesItem < Internal::Types::Model
6
+ field :phone, -> { String }, optional: true, nullable: false
7
+ field :label, -> { String }, optional: true, nullable: false
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Types
5
+ class AgentSummaryConfigWebsitesItem < Internal::Types::Model
6
+ field :url, -> { String }, optional: true, nullable: false
7
+ field :label, -> { String }, optional: true, nullable: false
8
+ end
9
+ end
10
+ end