rcs 2.0.0.pre.rc.3 → 2.0.0.pre.rc.5

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.
@@ -0,0 +1,67 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "ostruct"
4
+ require "json"
5
+
6
+ module Pinnacle
7
+ module Types
8
+ class RcsCapabilityCards
9
+ # @return [Boolean] Whether the phone number supports standalone rich cards (`cards.length == 1`)
10
+ attr_reader :standalone
11
+ # @return [Boolean] Whether the phone number supports carousel rich cards
12
+ attr_reader :carousel
13
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
14
+ attr_reader :additional_properties
15
+ # @return [Object]
16
+ attr_reader :_field_set
17
+ protected :_field_set
18
+
19
+ OMIT = Object.new
20
+
21
+ # @param standalone [Boolean] Whether the phone number supports standalone rich cards (`cards.length == 1`)
22
+ # @param carousel [Boolean] Whether the phone number supports carousel rich cards
23
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
24
+ # @return [Pinnacle::Types::RcsCapabilityCards]
25
+ def initialize(standalone:, carousel:, additional_properties: nil)
26
+ @standalone = standalone
27
+ @carousel = carousel
28
+ @additional_properties = additional_properties
29
+ @_field_set = { "standalone": standalone, "carousel": carousel }
30
+ end
31
+
32
+ # Deserialize a JSON object to an instance of RcsCapabilityCards
33
+ #
34
+ # @param json_object [String]
35
+ # @return [Pinnacle::Types::RcsCapabilityCards]
36
+ def self.from_json(json_object:)
37
+ struct = JSON.parse(json_object, object_class: OpenStruct)
38
+ parsed_json = JSON.parse(json_object)
39
+ standalone = parsed_json["standalone"]
40
+ carousel = parsed_json["carousel"]
41
+ new(
42
+ standalone: standalone,
43
+ carousel: carousel,
44
+ additional_properties: struct
45
+ )
46
+ end
47
+
48
+ # Serialize an instance of RcsCapabilityCards to a JSON object
49
+ #
50
+ # @return [String]
51
+ def to_json(*_args)
52
+ @_field_set&.to_json
53
+ end
54
+
55
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
56
+ # hash and check each fields type against the current object's property
57
+ # definitions.
58
+ #
59
+ # @param obj [Object]
60
+ # @return [Void]
61
+ def self.validate_raw(obj:)
62
+ obj.standalone.is_a?(Boolean) != false || raise("Passed value for field obj.standalone is not the expected type, validation failed.")
63
+ obj.carousel.is_a?(Boolean) != false || raise("Passed value for field obj.carousel is not the expected type, validation failed.")
64
+ end
65
+ end
66
+ end
67
+ end
@@ -0,0 +1,75 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "ostruct"
4
+ require "json"
5
+
6
+ module Pinnacle
7
+ module Types
8
+ # Response containing the generated RCS service id and/or url. You can always
9
+ # create a link with the service id that is returned.
10
+ # To create a link follow the format:
11
+ # sms://{PHONE_NUMBER}?service_id={SERVICE_ID}&body={URL_ENCODED_BODY}
12
+ class RcsLinkResult
13
+ # @return [String] The generated RCS link URL. If no phone number is provided, no url will be
14
+ # generated.
15
+ attr_reader :url
16
+ # @return [String] The service ID used for the link
17
+ attr_reader :service_id
18
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
19
+ attr_reader :additional_properties
20
+ # @return [Object]
21
+ attr_reader :_field_set
22
+ protected :_field_set
23
+
24
+ OMIT = Object.new
25
+
26
+ # @param url [String] The generated RCS link URL. If no phone number is provided, no url will be
27
+ # generated.
28
+ # @param service_id [String] The service ID used for the link
29
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
30
+ # @return [Pinnacle::Types::RcsLinkResult]
31
+ def initialize(service_id:, url: OMIT, additional_properties: nil)
32
+ @url = url if url != OMIT
33
+ @service_id = service_id
34
+ @additional_properties = additional_properties
35
+ @_field_set = { "url": url, "serviceId": service_id }.reject do |_k, v|
36
+ v == OMIT
37
+ end
38
+ end
39
+
40
+ # Deserialize a JSON object to an instance of RcsLinkResult
41
+ #
42
+ # @param json_object [String]
43
+ # @return [Pinnacle::Types::RcsLinkResult]
44
+ def self.from_json(json_object:)
45
+ struct = JSON.parse(json_object, object_class: OpenStruct)
46
+ parsed_json = JSON.parse(json_object)
47
+ url = parsed_json["url"]
48
+ service_id = parsed_json["serviceId"]
49
+ new(
50
+ url: url,
51
+ service_id: service_id,
52
+ additional_properties: struct
53
+ )
54
+ end
55
+
56
+ # Serialize an instance of RcsLinkResult to a JSON object
57
+ #
58
+ # @return [String]
59
+ def to_json(*_args)
60
+ @_field_set&.to_json
61
+ end
62
+
63
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
64
+ # hash and check each fields type against the current object's property
65
+ # definitions.
66
+ #
67
+ # @param obj [Object]
68
+ # @return [Void]
69
+ def self.validate_raw(obj:)
70
+ obj.url&.is_a?(String) != false || raise("Passed value for field obj.url is not the expected type, validation failed.")
71
+ obj.service_id.is_a?(String) != false || raise("Passed value for field obj.service_id is not the expected type, validation failed.")
72
+ end
73
+ end
74
+ end
75
+ end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative "rich_button"
3
4
  require "ostruct"
4
5
  require "json"
5
6
 
@@ -12,6 +13,8 @@ module Pinnacle
12
13
  class RcsValidateContentMedia
13
14
  # @return [String] Media file URLs to send.
14
15
  attr_reader :media
16
+ # @return [Array<Pinnacle::Types::RichButton>]
17
+ attr_reader :quick_replies
15
18
  # @return [OpenStruct] Additional properties unmapped to the current class definition
16
19
  attr_reader :additional_properties
17
20
  # @return [Object]
@@ -21,12 +24,14 @@ module Pinnacle
21
24
  OMIT = Object.new
22
25
 
23
26
  # @param media [String] Media file URLs to send.
27
+ # @param quick_replies [Array<Pinnacle::Types::RichButton>]
24
28
  # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
25
29
  # @return [Pinnacle::Types::RcsValidateContentMedia]
26
- def initialize(media:, additional_properties: nil)
30
+ def initialize(media:, quick_replies:, additional_properties: nil)
27
31
  @media = media
32
+ @quick_replies = quick_replies
28
33
  @additional_properties = additional_properties
29
- @_field_set = { "media": media }
34
+ @_field_set = { "media": media, "quickReplies": quick_replies }
30
35
  end
31
36
 
32
37
  # Deserialize a JSON object to an instance of RcsValidateContentMedia
@@ -37,7 +42,15 @@ module Pinnacle
37
42
  struct = JSON.parse(json_object, object_class: OpenStruct)
38
43
  parsed_json = JSON.parse(json_object)
39
44
  media = parsed_json["media"]
40
- new(media: media, additional_properties: struct)
45
+ quick_replies = parsed_json["quickReplies"]&.map do |item|
46
+ item = item.to_json
47
+ Pinnacle::Types::RichButton.from_json(json_object: item)
48
+ end
49
+ new(
50
+ media: media,
51
+ quick_replies: quick_replies,
52
+ additional_properties: struct
53
+ )
41
54
  end
42
55
 
43
56
  # Serialize an instance of RcsValidateContentMedia to a JSON object
@@ -55,6 +68,7 @@ module Pinnacle
55
68
  # @return [Void]
56
69
  def self.validate_raw(obj:)
57
70
  obj.media.is_a?(String) != false || raise("Passed value for field obj.media is not the expected type, validation failed.")
71
+ obj.quick_replies.is_a?(Array) != false || raise("Passed value for field obj.quick_replies is not the expected type, validation failed.")
58
72
  end
59
73
  end
60
74
  end
@@ -0,0 +1,58 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "ostruct"
4
+ require "json"
5
+
6
+ module Pinnacle
7
+ module Types
8
+ # Response indicating success of whitelisting operation
9
+ class RcsWhitelistResponse
10
+ # @return [Boolean] Whether the whitelisting operation was successful
11
+ attr_reader :success
12
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
13
+ attr_reader :additional_properties
14
+ # @return [Object]
15
+ attr_reader :_field_set
16
+ protected :_field_set
17
+
18
+ OMIT = Object.new
19
+
20
+ # @param success [Boolean] Whether the whitelisting operation was successful
21
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
22
+ # @return [Pinnacle::Types::RcsWhitelistResponse]
23
+ def initialize(success:, additional_properties: nil)
24
+ @success = success
25
+ @additional_properties = additional_properties
26
+ @_field_set = { "success": success }
27
+ end
28
+
29
+ # Deserialize a JSON object to an instance of RcsWhitelistResponse
30
+ #
31
+ # @param json_object [String]
32
+ # @return [Pinnacle::Types::RcsWhitelistResponse]
33
+ def self.from_json(json_object:)
34
+ struct = JSON.parse(json_object, object_class: OpenStruct)
35
+ parsed_json = JSON.parse(json_object)
36
+ success = parsed_json["success"]
37
+ new(success: success, additional_properties: struct)
38
+ end
39
+
40
+ # Serialize an instance of RcsWhitelistResponse to a JSON object
41
+ #
42
+ # @return [String]
43
+ def to_json(*_args)
44
+ @_field_set&.to_json
45
+ end
46
+
47
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
48
+ # hash and check each fields type against the current object's property
49
+ # definitions.
50
+ #
51
+ # @param obj [Object]
52
+ # @return [Void]
53
+ def self.validate_raw(obj:)
54
+ obj.success.is_a?(Boolean) != false || raise("Passed value for field obj.success is not the expected type, validation failed.")
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "conversation"
4
+ require "ostruct"
5
+ require "json"
6
+
7
+ module Pinnacle
8
+ module Types
9
+ class RetrievedConversations
10
+ # @return [Integer] Total number of conversations matching the filter.
11
+ attr_reader :count
12
+ # @return [Array<Pinnacle::Types::Conversation>]
13
+ attr_reader :conversations
14
+ # @return [Boolean] Indicates if more conversations are available beyond the current page.
15
+ attr_reader :has_more
16
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
17
+ attr_reader :additional_properties
18
+ # @return [Object]
19
+ attr_reader :_field_set
20
+ protected :_field_set
21
+
22
+ OMIT = Object.new
23
+
24
+ # @param count [Integer] Total number of conversations matching the filter.
25
+ # @param conversations [Array<Pinnacle::Types::Conversation>]
26
+ # @param has_more [Boolean] Indicates if more conversations are available beyond the current page.
27
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
28
+ # @return [Pinnacle::Types::RetrievedConversations]
29
+ def initialize(count:, conversations:, has_more:, additional_properties: nil)
30
+ @count = count
31
+ @conversations = conversations
32
+ @has_more = has_more
33
+ @additional_properties = additional_properties
34
+ @_field_set = { "count": count, "conversations": conversations, "hasMore": has_more }
35
+ end
36
+
37
+ # Deserialize a JSON object to an instance of RetrievedConversations
38
+ #
39
+ # @param json_object [String]
40
+ # @return [Pinnacle::Types::RetrievedConversations]
41
+ def self.from_json(json_object:)
42
+ struct = JSON.parse(json_object, object_class: OpenStruct)
43
+ parsed_json = JSON.parse(json_object)
44
+ count = parsed_json["count"]
45
+ conversations = parsed_json["conversations"]&.map do |item|
46
+ item = item.to_json
47
+ Pinnacle::Types::Conversation.from_json(json_object: item)
48
+ end
49
+ has_more = parsed_json["hasMore"]
50
+ new(
51
+ count: count,
52
+ conversations: conversations,
53
+ has_more: has_more,
54
+ additional_properties: struct
55
+ )
56
+ end
57
+
58
+ # Serialize an instance of RetrievedConversations to a JSON object
59
+ #
60
+ # @return [String]
61
+ def to_json(*_args)
62
+ @_field_set&.to_json
63
+ end
64
+
65
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
66
+ # hash and check each fields type against the current object's property
67
+ # definitions.
68
+ #
69
+ # @param obj [Object]
70
+ # @return [Void]
71
+ def self.validate_raw(obj:)
72
+ obj.count.is_a?(Integer) != false || raise("Passed value for field obj.count is not the expected type, validation failed.")
73
+ obj.conversations.is_a?(Array) != false || raise("Passed value for field obj.conversations is not the expected type, validation failed.")
74
+ obj.has_more.is_a?(Boolean) != false || raise("Passed value for field obj.has_more is not the expected type, validation failed.")
75
+ end
76
+ end
77
+ end
78
+ end
data/lib/rcs.rb CHANGED
@@ -8,6 +8,7 @@ require_relative "rcs/contacts/client"
8
8
  require_relative "rcs/conversations/client"
9
9
  require_relative "rcs/messages/client"
10
10
  require_relative "rcs/phone_numbers/client"
11
+ require_relative "rcs/rcs/client"
11
12
  require_relative "rcs/webhooks/client"
12
13
  require_relative "rcs/campaigns/client"
13
14
  require_relative "rcs/status/client"
@@ -25,6 +26,8 @@ module Pinnacle
25
26
  attr_reader :messages
26
27
  # @return [Pinnacle::PhoneNumbersClient]
27
28
  attr_reader :phone_numbers
29
+ # @return [Pinnacle::RcsClient]
30
+ attr_reader :rcs
28
31
  # @return [Pinnacle::WebhooksClient]
29
32
  attr_reader :webhooks
30
33
  # @return [Pinnacle::Campaigns::Client]
@@ -54,6 +57,7 @@ module Pinnacle
54
57
  @conversations = Pinnacle::ConversationsClient.new(request_client: @request_client)
55
58
  @messages = Pinnacle::MessagesClient.new(request_client: @request_client)
56
59
  @phone_numbers = Pinnacle::PhoneNumbersClient.new(request_client: @request_client)
60
+ @rcs = Pinnacle::RcsClient.new(request_client: @request_client)
57
61
  @webhooks = Pinnacle::WebhooksClient.new(request_client: @request_client)
58
62
  @campaigns = Pinnacle::Campaigns::Client.new(request_client: @request_client)
59
63
  @status = Pinnacle::Status::Client.new(request_client: @request_client)
@@ -72,6 +76,8 @@ module Pinnacle
72
76
  attr_reader :messages
73
77
  # @return [Pinnacle::AsyncPhoneNumbersClient]
74
78
  attr_reader :phone_numbers
79
+ # @return [Pinnacle::AsyncRcsClient]
80
+ attr_reader :rcs
75
81
  # @return [Pinnacle::AsyncWebhooksClient]
76
82
  attr_reader :webhooks
77
83
  # @return [Pinnacle::Campaigns::AsyncClient]
@@ -101,6 +107,7 @@ module Pinnacle
101
107
  @conversations = Pinnacle::AsyncConversationsClient.new(request_client: @async_request_client)
102
108
  @messages = Pinnacle::AsyncMessagesClient.new(request_client: @async_request_client)
103
109
  @phone_numbers = Pinnacle::AsyncPhoneNumbersClient.new(request_client: @async_request_client)
110
+ @rcs = Pinnacle::AsyncRcsClient.new(request_client: @async_request_client)
104
111
  @webhooks = Pinnacle::AsyncWebhooksClient.new(request_client: @async_request_client)
105
112
  @campaigns = Pinnacle::Campaigns::AsyncClient.new(request_client: @async_request_client)
106
113
  @status = Pinnacle::Status::AsyncClient.new(request_client: @async_request_client)
data/lib/requests.rb CHANGED
@@ -43,7 +43,7 @@ module Pinnacle
43
43
 
44
44
  # @return [Hash{String => String}]
45
45
  def get_headers
46
- headers = { "X-Fern-Language": "Ruby", "X-Fern-SDK-Name": "rcs", "X-Fern-SDK-Version": "2.0.0-rc.3" }
46
+ headers = { "X-Fern-Language": "Ruby", "X-Fern-SDK-Name": "rcs", "X-Fern-SDK-Version": "2.0.0-rc.5" }
47
47
  headers["PINNACLE-API-KEY"] = ((@api_key.is_a? Method) ? @api_key.call : @api_key) unless @api_key.nil?
48
48
  headers
49
49
  end
@@ -87,7 +87,7 @@ module Pinnacle
87
87
 
88
88
  # @return [Hash{String => String}]
89
89
  def get_headers
90
- headers = { "X-Fern-Language": "Ruby", "X-Fern-SDK-Name": "rcs", "X-Fern-SDK-Version": "2.0.0-rc.3" }
90
+ headers = { "X-Fern-Language": "Ruby", "X-Fern-SDK-Name": "rcs", "X-Fern-SDK-Version": "2.0.0-rc.5" }
91
91
  headers["PINNACLE-API-KEY"] = ((@api_key.is_a? Method) ? @api_key.call : @api_key) unless @api_key.nil?
92
92
  headers
93
93
  end
data/lib/types_export.rb CHANGED
@@ -127,6 +127,8 @@ require_relative "rcs/types/phone"
127
127
  require_relative "rcs/types/agent"
128
128
  require_relative "rcs/types/conversation_sender"
129
129
  require_relative "rcs/types/conversation"
130
+ require_relative "rcs/types/error_response"
131
+ require_relative "rcs/types/retrieved_conversations"
130
132
  require_relative "rcs/types/conversation_list"
131
133
  require_relative "rcs/types/successful_conversation_update"
132
134
  require_relative "rcs/types/sms_content"
@@ -219,6 +221,12 @@ require_relative "rcs/types/phone_number_campaign_detach_phone_numbers_item_camp
219
221
  require_relative "rcs/types/phone_number_campaign_detach_phone_numbers_item"
220
222
  require_relative "rcs/types/phone_number_campaign_detach_failed_item"
221
223
  require_relative "rcs/types/detached_phone_number_result"
224
+ require_relative "rcs/types/rcs_capability_cards"
225
+ require_relative "rcs/types/rcs_capability_actions"
226
+ require_relative "rcs/types/rcs_capability"
227
+ require_relative "rcs/types/rcs_capabilities_result"
228
+ require_relative "rcs/types/rcs_whitelist_response"
229
+ require_relative "rcs/types/rcs_link_result"
222
230
  require_relative "rcs/types/brand_status"
223
231
  require_relative "rcs/types/toll_free_status_enum"
224
232
  require_relative "rcs/types/get_toll_free_campaign_status_response_updates"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rcs
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.pre.rc.3
4
+ version: 2.0.0.pre.rc.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2025-09-13 00:00:00.000000000 Z
11
+ date: 2025-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async-http-faraday
@@ -147,6 +147,7 @@ files:
147
147
  - lib/rcs/phone_numbers/types/search_phone_number_by_location.rb
148
148
  - lib/rcs/phone_numbers/types/search_phone_number_options.rb
149
149
  - lib/rcs/phone_numbers/webhook/client.rb
150
+ - lib/rcs/rcs/client.rb
150
151
  - lib/rcs/status/client.rb
151
152
  - lib/rcs/status/get/client.rb
152
153
  - lib/rcs/tools/client.rb
@@ -224,6 +225,7 @@ files:
224
225
  - lib/rcs/types/enhanced_contact.rb
225
226
  - lib/rcs/types/enhanced_contact_item.rb
226
227
  - lib/rcs/types/error.rb
228
+ - lib/rcs/types/error_response.rb
227
229
  - lib/rcs/types/extended_brand.rb
228
230
  - lib/rcs/types/extended_brand_with_vetting.rb
229
231
  - lib/rcs/types/extended_rcs_campaign.rb
@@ -301,18 +303,25 @@ files:
301
303
  - lib/rcs/types/rcs_campaign_schema_use_case.rb
302
304
  - lib/rcs/types/rcs_campaign_status.rb
303
305
  - lib/rcs/types/rcs_campaign_use_case_enum.rb
306
+ - lib/rcs/types/rcs_capabilities_result.rb
307
+ - lib/rcs/types/rcs_capability.rb
308
+ - lib/rcs/types/rcs_capability_actions.rb
309
+ - lib/rcs/types/rcs_capability_cards.rb
304
310
  - lib/rcs/types/rcs_cards.rb
305
311
  - lib/rcs/types/rcs_cards_cards_item.rb
306
312
  - lib/rcs/types/rcs_cards_content.rb
307
313
  - lib/rcs/types/rcs_cards_content_cards_item.rb
308
314
  - lib/rcs/types/rcs_content.rb
315
+ - lib/rcs/types/rcs_link_result.rb
309
316
  - lib/rcs/types/rcs_media_content.rb
310
317
  - lib/rcs/types/rcs_media_details_content.rb
311
318
  - lib/rcs/types/rcs_text_content.rb
312
319
  - lib/rcs/types/rcs_validate_content.rb
313
320
  - lib/rcs/types/rcs_validate_content_media.rb
314
321
  - lib/rcs/types/rcs_validation_result.rb
322
+ - lib/rcs/types/rcs_whitelist_response.rb
315
323
  - lib/rcs/types/reaction_result.rb
324
+ - lib/rcs/types/retrieved_conversations.rb
316
325
  - lib/rcs/types/rich_button.rb
317
326
  - lib/rcs/types/rich_cards_message.rb
318
327
  - lib/rcs/types/rich_media_message.rb