rcs 2.0.0.pre.rc.5 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. checksums.yaml +4 -4
  2. data/lib/rcs/brands/client.rb +36 -24
  3. data/lib/rcs/campaigns/dlc/client.rb +36 -26
  4. data/lib/rcs/campaigns/rcs/client.rb +26 -22
  5. data/lib/rcs/campaigns/rcs/types/rcs_autofill_response.rb +6 -6
  6. data/lib/rcs/campaigns/toll_free/client.rb +32 -26
  7. data/lib/rcs/campaigns/toll_free/types/toll_free_autofill_response.rb +6 -6
  8. data/lib/rcs/contacts/client.rb +10 -8
  9. data/lib/rcs/conversations/client.rb +144 -16
  10. data/lib/rcs/conversations/types/conversations_list_messages_request_direction.rb +12 -0
  11. data/lib/rcs/conversations/types/conversations_list_messages_request_sort_order.rb +12 -0
  12. data/lib/rcs/conversations/types/conversations_list_messages_request_status.rb +17 -0
  13. data/lib/rcs/conversations/types/conversations_list_messages_request_type.rb +13 -0
  14. data/lib/rcs/messages/client.rb +12 -29
  15. data/lib/rcs/messages/rcs/client.rb +1 -1
  16. data/lib/rcs/phone_numbers/campaign/client.rb +20 -6
  17. data/lib/rcs/phone_numbers/client.rb +0 -14
  18. data/lib/rcs/phone_numbers/webhook/client.rb +12 -10
  19. data/lib/rcs/rcs/client.rb +32 -18
  20. data/lib/rcs/status/get/client.rb +32 -16
  21. data/lib/rcs/tools/contact_card/client.rb +18 -8
  22. data/lib/rcs/tools/file/client.rb +92 -2
  23. data/lib/rcs/tools/file/types/upload_file_options.rb +21 -3
  24. data/lib/rcs/tools/url/client.rb +4 -2
  25. data/lib/rcs/types/attach_webhook_by_id_params.rb +5 -5
  26. data/lib/rcs/types/attach_webhook_response_webhook.rb +5 -3
  27. data/lib/rcs/types/autofill_campaign_params.rb +15 -3
  28. data/lib/rcs/types/autofill_dlc_campaign_response.rb +10 -6
  29. data/lib/rcs/types/autofill_dlc_response_keywords.rb +8 -10
  30. data/lib/rcs/types/autofill_dlc_response_keywords_help.rb +3 -3
  31. data/lib/rcs/types/autofill_dlc_response_keywords_opt_in.rb +6 -4
  32. data/lib/rcs/types/autofill_dlc_response_keywords_opt_out.rb +3 -3
  33. data/lib/rcs/types/autofill_dlc_response_options.rb +12 -12
  34. data/lib/rcs/types/brand_status.rb +5 -3
  35. data/lib/rcs/types/{inbound_button.rb → button_clicked.rb} +7 -7
  36. data/lib/rcs/types/button_clicked_data.rb +80 -0
  37. data/lib/rcs/types/button_clicked_data_button.rb +118 -0
  38. data/lib/rcs/types/{click_action_data.rb → button_clicked_data_button_raw.rb} +10 -8
  39. data/lib/rcs/types/button_clicked_data_button_type.rb +15 -0
  40. data/lib/rcs/types/campaign_query.rb +10 -2
  41. data/lib/rcs/types/contact.rb +5 -3
  42. data/lib/rcs/types/contact_id.rb +5 -3
  43. data/lib/rcs/types/conversation.rb +16 -8
  44. data/lib/rcs/types/conversation_by_id_params.rb +7 -3
  45. data/lib/rcs/types/conversation_contact.rb +5 -3
  46. data/lib/rcs/types/conversation_list.rb +50 -28
  47. data/lib/rcs/types/create_url_options.rb +4 -2
  48. data/lib/rcs/types/detached_webhook_info.rb +5 -3
  49. data/lib/rcs/types/dlc_campaign_status.rb +5 -3
  50. data/lib/rcs/types/dlc_campaign_with_extended_brand_and_status.rb +21 -19
  51. data/lib/rcs/types/dlc_with_extended_brand_and_status_keywords_help.rb +3 -3
  52. data/lib/rcs/types/dlc_with_extended_brand_and_status_keywords_opt_in.rb +6 -4
  53. data/lib/rcs/types/dlc_with_extended_brand_and_status_keywords_opt_out.rb +6 -4
  54. data/lib/rcs/types/extended_brand.rb +25 -13
  55. data/lib/rcs/types/extended_brand_with_vetting.rb +25 -13
  56. data/lib/rcs/types/extended_rcs_campaign.rb +25 -14
  57. data/lib/rcs/types/link_click_event.rb +1 -17
  58. data/lib/rcs/types/message.rb +5 -3
  59. data/lib/rcs/types/message_content.rb +4 -4
  60. data/lib/rcs/types/message_event.rb +143 -0
  61. data/lib/rcs/types/message_event_content.rb +127 -0
  62. data/lib/rcs/types/message_event_conversation.rb +82 -0
  63. data/lib/rcs/types/message_event_direction.rb +11 -0
  64. data/lib/rcs/types/message_event_mms_content.rb +94 -0
  65. data/lib/rcs/types/message_event_rcs_button_data.rb +104 -0
  66. data/lib/rcs/types/message_event_rcs_cards_content.rb +99 -0
  67. data/lib/rcs/types/message_event_rcs_cards_content_cards_item.rb +94 -0
  68. data/lib/rcs/types/message_event_rcs_location_data.rb +91 -0
  69. data/lib/rcs/types/message_event_rcs_media_content.rb +94 -0
  70. data/lib/rcs/types/message_event_rcs_text_content.rb +92 -0
  71. data/lib/rcs/types/message_event_sms_content.rb +81 -0
  72. data/lib/rcs/types/{retrieved_conversations.rb → message_list.rb} +26 -25
  73. data/lib/rcs/types/message_with_reaction.rb +197 -0
  74. data/lib/rcs/types/message_with_reaction_direction.rb +11 -0
  75. data/lib/rcs/types/{error_response.rb → not_found_error_body.rb} +7 -7
  76. data/lib/rcs/types/phone_number_campaign_attach_phone_numbers_item_campaign.rb +7 -3
  77. data/lib/rcs/types/phone_number_campaign_detach_phone_numbers_item_campaign.rb +7 -3
  78. data/lib/rcs/types/pinnacle_file_upload_metadata.rb +18 -2
  79. data/lib/rcs/types/profile_status_enum.rb +4 -4
  80. data/lib/rcs/types/rcs_base_options.rb +12 -1
  81. data/lib/rcs/types/rcs_button_call.rb +11 -2
  82. data/lib/rcs/types/rcs_button_open_url.rb +11 -2
  83. data/lib/rcs/types/rcs_button_request_user_location.rb +15 -3
  84. data/lib/rcs/types/rcs_button_schedule_event.rb +9 -1
  85. data/lib/rcs/types/rcs_button_send_location.rb +11 -2
  86. data/lib/rcs/types/rcs_button_trigger.rb +8 -6
  87. data/lib/rcs/types/rcs_campaign.rb +3 -3
  88. data/lib/rcs/types/rcs_campaign_schema_extra_agent.rb +8 -8
  89. data/lib/rcs/types/rcs_campaign_status.rb +5 -3
  90. data/lib/rcs/types/reaction_result.rb +10 -6
  91. data/lib/rcs/types/refreshed_file.rb +67 -0
  92. data/lib/rcs/types/{rcs.rb → rich_message.rb} +3 -3
  93. data/lib/rcs/types/scheduled_messaage.rb +5 -3
  94. data/lib/rcs/types/sent_mms_details.rb +4 -2
  95. data/lib/rcs/types/sent_rcs_details.rb +12 -13
  96. data/lib/rcs/types/sent_sms_details.rb +5 -3
  97. data/lib/rcs/types/toll_free_campaign.rb +3 -3
  98. data/lib/rcs/types/toll_free_campaign_status.rb +5 -3
  99. data/lib/rcs/types/toll_free_campaign_with_extended_brand_and_status.rb +3 -5
  100. data/lib/rcs/types/updated_contact_id.rb +5 -3
  101. data/lib/rcs/types/user_event.rb +83 -0
  102. data/lib/rcs/types/user_event_conversation.rb +78 -0
  103. data/lib/rcs/types/v_card_data.rb +5 -3
  104. data/lib/rcs/types/validate_campaign_params.rb +15 -3
  105. data/lib/rcs/types/vcard.rb +5 -3
  106. data/lib/rcs/types/vcard_content.rb +5 -3
  107. data/lib/rcs/types/vcard_resource.rb +5 -3
  108. data/lib/rcs/types/webhook_event_enum.rb +1 -0
  109. data/lib/rcs/types/webhooks.rb +5 -3
  110. data/lib/requests.rb +2 -2
  111. data/lib/types_export.rb +29 -7
  112. metadata +33 -11
  113. data/lib/rcs/types/click_action.rb +0 -73
  114. data/lib/rcs/types/click_action_data_metadata.rb +0 -69
@@ -0,0 +1,143 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "webhook_event_enum"
4
+ require_relative "message_event_conversation"
5
+ require_relative "message_status_enum"
6
+ require_relative "message_event_direction"
7
+ require_relative "message_event_content"
8
+ require "ostruct"
9
+ require "json"
10
+
11
+ module Pinnacle
12
+ module Types
13
+ # Represents an incoming message or message status update received via webhook.
14
+ class MessageEvent
15
+ # @return [Pinnacle::Types::WebhookEventEnum] Type of webhook event. MESSAGE.STATUS for message status updates or
16
+ # MESSAGE.RECEIVED for inbound messages.
17
+ attr_reader :type
18
+ # @return [Pinnacle::Types::MessageEventConversation] Conversation metadata containing the conversation ID, sender, and recipient
19
+ # information.
20
+ attr_reader :conversation
21
+ # @return [Pinnacle::Types::MessageStatusEnum]
22
+ attr_reader :status
23
+ # @return [Pinnacle::Types::MessageEventDirection] Direction of the message flow.
24
+ attr_reader :direction
25
+ # @return [Integer] Number of segments for this message.
26
+ attr_reader :segments
27
+ # @return [String] Timestamp when the message was sent in ISO 8601 format.
28
+ attr_reader :sent_at
29
+ # @return [String] Timestamp when the message was delivered in ISO 8601 format.
30
+ # Null if not yet delivered or for inbound messages.
31
+ attr_reader :delivered_at
32
+ # @return [Pinnacle::Types::MessageEventContent]
33
+ attr_reader :message
34
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
35
+ attr_reader :additional_properties
36
+ # @return [Object]
37
+ attr_reader :_field_set
38
+ protected :_field_set
39
+
40
+ OMIT = Object.new
41
+
42
+ # @param type [Pinnacle::Types::WebhookEventEnum] Type of webhook event. MESSAGE.STATUS for message status updates or
43
+ # MESSAGE.RECEIVED for inbound messages.
44
+ # @param conversation [Pinnacle::Types::MessageEventConversation] Conversation metadata containing the conversation ID, sender, and recipient
45
+ # information.
46
+ # @param status [Pinnacle::Types::MessageStatusEnum]
47
+ # @param direction [Pinnacle::Types::MessageEventDirection] Direction of the message flow.
48
+ # @param segments [Integer] Number of segments for this message.
49
+ # @param sent_at [String] Timestamp when the message was sent in ISO 8601 format.
50
+ # @param delivered_at [String] Timestamp when the message was delivered in ISO 8601 format.
51
+ # Null if not yet delivered or for inbound messages.
52
+ # @param message [Pinnacle::Types::MessageEventContent]
53
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
54
+ # @return [Pinnacle::Types::MessageEvent]
55
+ def initialize(type:, conversation:, status:, direction:, segments:, sent_at:, message:, delivered_at: OMIT,
56
+ additional_properties: nil)
57
+ @type = type
58
+ @conversation = conversation
59
+ @status = status
60
+ @direction = direction
61
+ @segments = segments
62
+ @sent_at = sent_at
63
+ @delivered_at = delivered_at if delivered_at != OMIT
64
+ @message = message
65
+ @additional_properties = additional_properties
66
+ @_field_set = {
67
+ "type": type,
68
+ "conversation": conversation,
69
+ "status": status,
70
+ "direction": direction,
71
+ "segments": segments,
72
+ "sentAt": sent_at,
73
+ "deliveredAt": delivered_at,
74
+ "message": message
75
+ }.reject do |_k, v|
76
+ v == OMIT
77
+ end
78
+ end
79
+
80
+ # Deserialize a JSON object to an instance of MessageEvent
81
+ #
82
+ # @param json_object [String]
83
+ # @return [Pinnacle::Types::MessageEvent]
84
+ def self.from_json(json_object:)
85
+ struct = JSON.parse(json_object, object_class: OpenStruct)
86
+ parsed_json = JSON.parse(json_object)
87
+ type = parsed_json["type"]
88
+ if parsed_json["conversation"].nil?
89
+ conversation = nil
90
+ else
91
+ conversation = parsed_json["conversation"].to_json
92
+ conversation = Pinnacle::Types::MessageEventConversation.from_json(json_object: conversation)
93
+ end
94
+ status = parsed_json["status"]
95
+ direction = parsed_json["direction"]
96
+ segments = parsed_json["segments"]
97
+ sent_at = parsed_json["sentAt"]
98
+ delivered_at = parsed_json["deliveredAt"]
99
+ if parsed_json["message"].nil?
100
+ message = nil
101
+ else
102
+ message = parsed_json["message"].to_json
103
+ message = Pinnacle::Types::MessageEventContent.from_json(json_object: message)
104
+ end
105
+ new(
106
+ type: type,
107
+ conversation: conversation,
108
+ status: status,
109
+ direction: direction,
110
+ segments: segments,
111
+ sent_at: sent_at,
112
+ delivered_at: delivered_at,
113
+ message: message,
114
+ additional_properties: struct
115
+ )
116
+ end
117
+
118
+ # Serialize an instance of MessageEvent to a JSON object
119
+ #
120
+ # @return [String]
121
+ def to_json(*_args)
122
+ @_field_set&.to_json
123
+ end
124
+
125
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
126
+ # hash and check each fields type against the current object's property
127
+ # definitions.
128
+ #
129
+ # @param obj [Object]
130
+ # @return [Void]
131
+ def self.validate_raw(obj:)
132
+ obj.type.is_a?(Pinnacle::Types::WebhookEventEnum) != false || raise("Passed value for field obj.type is not the expected type, validation failed.")
133
+ Pinnacle::Types::MessageEventConversation.validate_raw(obj: obj.conversation)
134
+ obj.status.is_a?(Pinnacle::Types::MessageStatusEnum) != false || raise("Passed value for field obj.status is not the expected type, validation failed.")
135
+ obj.direction.is_a?(Pinnacle::Types::MessageEventDirection) != false || raise("Passed value for field obj.direction is not the expected type, validation failed.")
136
+ obj.segments.is_a?(Integer) != false || raise("Passed value for field obj.segments is not the expected type, validation failed.")
137
+ obj.sent_at.is_a?(String) != false || raise("Passed value for field obj.sent_at is not the expected type, validation failed.")
138
+ obj.delivered_at&.is_a?(String) != false || raise("Passed value for field obj.delivered_at is not the expected type, validation failed.")
139
+ Pinnacle::Types::MessageEventContent.validate_raw(obj: obj.message)
140
+ end
141
+ end
142
+ end
143
+ end
@@ -0,0 +1,127 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "json"
4
+ require_relative "message_event_sms_content"
5
+ require_relative "message_event_mms_content"
6
+ require_relative "message_event_rcs_text_content"
7
+ require_relative "message_event_rcs_media_content"
8
+ require_relative "message_event_rcs_cards_content"
9
+ require_relative "message_event_rcs_button_data"
10
+ require_relative "message_event_rcs_location_data"
11
+
12
+ module Pinnacle
13
+ module Types
14
+ # Content of an incoming or outgoing message. Discriminated by the `type` field.
15
+ class MessageEventContent
16
+ # Deserialize a JSON object to an instance of MessageEventContent
17
+ #
18
+ # @param json_object [String]
19
+ # @return [Pinnacle::Types::MessageEventContent]
20
+ def self.from_json(json_object:)
21
+ struct = JSON.parse(json_object, object_class: OpenStruct)
22
+ begin
23
+ Pinnacle::Types::MessageEventSmsContent.validate_raw(obj: struct)
24
+ return Pinnacle::Types::MessageEventSmsContent.from_json(json_object: struct) unless struct.nil?
25
+
26
+ return nil
27
+ rescue StandardError
28
+ # noop
29
+ end
30
+ begin
31
+ Pinnacle::Types::MessageEventMmsContent.validate_raw(obj: struct)
32
+ return Pinnacle::Types::MessageEventMmsContent.from_json(json_object: struct) unless struct.nil?
33
+
34
+ return nil
35
+ rescue StandardError
36
+ # noop
37
+ end
38
+ begin
39
+ Pinnacle::Types::MessageEventRcsTextContent.validate_raw(obj: struct)
40
+ return Pinnacle::Types::MessageEventRcsTextContent.from_json(json_object: struct) unless struct.nil?
41
+
42
+ return nil
43
+ rescue StandardError
44
+ # noop
45
+ end
46
+ begin
47
+ Pinnacle::Types::MessageEventRcsMediaContent.validate_raw(obj: struct)
48
+ return Pinnacle::Types::MessageEventRcsMediaContent.from_json(json_object: struct) unless struct.nil?
49
+
50
+ return nil
51
+ rescue StandardError
52
+ # noop
53
+ end
54
+ begin
55
+ Pinnacle::Types::MessageEventRcsCardsContent.validate_raw(obj: struct)
56
+ return Pinnacle::Types::MessageEventRcsCardsContent.from_json(json_object: struct) unless struct.nil?
57
+
58
+ return nil
59
+ rescue StandardError
60
+ # noop
61
+ end
62
+ begin
63
+ Pinnacle::Types::MessageEventRcsButtonData.validate_raw(obj: struct)
64
+ return Pinnacle::Types::MessageEventRcsButtonData.from_json(json_object: struct) unless struct.nil?
65
+
66
+ return nil
67
+ rescue StandardError
68
+ # noop
69
+ end
70
+ begin
71
+ Pinnacle::Types::MessageEventRcsLocationData.validate_raw(obj: struct)
72
+ return Pinnacle::Types::MessageEventRcsLocationData.from_json(json_object: struct) unless struct.nil?
73
+
74
+ return nil
75
+ rescue StandardError
76
+ # noop
77
+ end
78
+ struct
79
+ end
80
+
81
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
82
+ # hash and check each fields type against the current object's property
83
+ # definitions.
84
+ #
85
+ # @param obj [Object]
86
+ # @return [Void]
87
+ def self.validate_raw(obj:)
88
+ begin
89
+ return Pinnacle::Types::MessageEventSmsContent.validate_raw(obj: obj)
90
+ rescue StandardError
91
+ # noop
92
+ end
93
+ begin
94
+ return Pinnacle::Types::MessageEventMmsContent.validate_raw(obj: obj)
95
+ rescue StandardError
96
+ # noop
97
+ end
98
+ begin
99
+ return Pinnacle::Types::MessageEventRcsTextContent.validate_raw(obj: obj)
100
+ rescue StandardError
101
+ # noop
102
+ end
103
+ begin
104
+ return Pinnacle::Types::MessageEventRcsMediaContent.validate_raw(obj: obj)
105
+ rescue StandardError
106
+ # noop
107
+ end
108
+ begin
109
+ return Pinnacle::Types::MessageEventRcsCardsContent.validate_raw(obj: obj)
110
+ rescue StandardError
111
+ # noop
112
+ end
113
+ begin
114
+ return Pinnacle::Types::MessageEventRcsButtonData.validate_raw(obj: obj)
115
+ rescue StandardError
116
+ # noop
117
+ end
118
+ begin
119
+ return Pinnacle::Types::MessageEventRcsLocationData.validate_raw(obj: obj)
120
+ rescue StandardError
121
+ # noop
122
+ end
123
+ raise("Passed value matched no type within the union, validation failed.")
124
+ end
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,82 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "ostruct"
4
+ require "json"
5
+
6
+ module Pinnacle
7
+ module Types
8
+ # Conversation metadata containing the conversation ID, sender, and recipient
9
+ # information.
10
+ class MessageEventConversation
11
+ # @return [String] Unique identifier for the conversation. This identifier is a string that always
12
+ # begins with the prefix `conv_`, for example: `conv_1234567890`. <br><br>
13
+ # To get more conversation details, use the [POST
14
+ # /conversations/get](/api-reference/conversations/get) endpoint.
15
+ attr_reader :id
16
+ # @return [String] Sender's phone number or agent ID.
17
+ attr_reader :from
18
+ # @return [String] Recipient's phone number.
19
+ attr_reader :to
20
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
21
+ attr_reader :additional_properties
22
+ # @return [Object]
23
+ attr_reader :_field_set
24
+ protected :_field_set
25
+
26
+ OMIT = Object.new
27
+
28
+ # @param id [String] Unique identifier for the conversation. This identifier is a string that always
29
+ # begins with the prefix `conv_`, for example: `conv_1234567890`. <br><br>
30
+ # To get more conversation details, use the [POST
31
+ # /conversations/get](/api-reference/conversations/get) endpoint.
32
+ # @param from [String] Sender's phone number or agent ID.
33
+ # @param to [String] Recipient's phone number.
34
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
35
+ # @return [Pinnacle::Types::MessageEventConversation]
36
+ def initialize(id:, from:, to:, additional_properties: nil)
37
+ @id = id
38
+ @from = from
39
+ @to = to
40
+ @additional_properties = additional_properties
41
+ @_field_set = { "id": id, "from": from, "to": to }
42
+ end
43
+
44
+ # Deserialize a JSON object to an instance of MessageEventConversation
45
+ #
46
+ # @param json_object [String]
47
+ # @return [Pinnacle::Types::MessageEventConversation]
48
+ def self.from_json(json_object:)
49
+ struct = JSON.parse(json_object, object_class: OpenStruct)
50
+ parsed_json = JSON.parse(json_object)
51
+ id = parsed_json["id"]
52
+ from = parsed_json["from"]
53
+ to = parsed_json["to"]
54
+ new(
55
+ id: id,
56
+ from: from,
57
+ to: to,
58
+ additional_properties: struct
59
+ )
60
+ end
61
+
62
+ # Serialize an instance of MessageEventConversation to a JSON object
63
+ #
64
+ # @return [String]
65
+ def to_json(*_args)
66
+ @_field_set&.to_json
67
+ end
68
+
69
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
70
+ # hash and check each fields type against the current object's property
71
+ # definitions.
72
+ #
73
+ # @param obj [Object]
74
+ # @return [Void]
75
+ def self.validate_raw(obj:)
76
+ obj.id.is_a?(String) != false || raise("Passed value for field obj.id is not the expected type, validation failed.")
77
+ obj.from.is_a?(String) != false || raise("Passed value for field obj.from is not the expected type, validation failed.")
78
+ obj.to.is_a?(String) != false || raise("Passed value for field obj.to is not the expected type, validation failed.")
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Pinnacle
4
+ module Types
5
+ # Direction of the message flow.
6
+ class MessageEventDirection
7
+ INBOUND = "INBOUND"
8
+ OUTBOUND = "OUTBOUND"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,94 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "ostruct"
4
+ require "json"
5
+
6
+ module Pinnacle
7
+ module Types
8
+ # MMS message with text and/or media files from a phone number.
9
+ class MessageEventMmsContent
10
+ # @return [String] Message type identifier.
11
+ attr_reader :type
12
+ # @return [String] Unique identifier of the message. This identifier is a string that always begins
13
+ # with the prefix `msg_`, for example: `msg_1234567890`. <br><br>
14
+ # To get the message details, use the [GET
15
+ # /messages/{id}](/api-reference/messages/get) endpoint.
16
+ attr_reader :id
17
+ # @return [Array<String>] URLs of media files in this message. <br>
18
+ # See [supported media
19
+ # types](https://app.pinnacle.sh/supported-file-types?type=MMS).
20
+ attr_reader :media_urls
21
+ # @return [String] Text content that may accompany the media files.
22
+ attr_reader :text
23
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
24
+ attr_reader :additional_properties
25
+ # @return [Object]
26
+ attr_reader :_field_set
27
+ protected :_field_set
28
+
29
+ OMIT = Object.new
30
+
31
+ # @param type [String] Message type identifier.
32
+ # @param id [String] Unique identifier of the message. This identifier is a string that always begins
33
+ # with the prefix `msg_`, for example: `msg_1234567890`. <br><br>
34
+ # To get the message details, use the [GET
35
+ # /messages/{id}](/api-reference/messages/get) endpoint.
36
+ # @param media_urls [Array<String>] URLs of media files in this message. <br>
37
+ # See [supported media
38
+ # types](https://app.pinnacle.sh/supported-file-types?type=MMS).
39
+ # @param text [String] Text content that may accompany the media files.
40
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
41
+ # @return [Pinnacle::Types::MessageEventMmsContent]
42
+ def initialize(type:, id:, media_urls:, text: OMIT, additional_properties: nil)
43
+ @type = type
44
+ @id = id
45
+ @media_urls = media_urls
46
+ @text = text if text != OMIT
47
+ @additional_properties = additional_properties
48
+ @_field_set = { "type": type, "id": id, "mediaUrls": media_urls, "text": text }.reject do |_k, v|
49
+ v == OMIT
50
+ end
51
+ end
52
+
53
+ # Deserialize a JSON object to an instance of MessageEventMmsContent
54
+ #
55
+ # @param json_object [String]
56
+ # @return [Pinnacle::Types::MessageEventMmsContent]
57
+ def self.from_json(json_object:)
58
+ struct = JSON.parse(json_object, object_class: OpenStruct)
59
+ parsed_json = JSON.parse(json_object)
60
+ type = parsed_json["type"]
61
+ id = parsed_json["id"]
62
+ media_urls = parsed_json["mediaUrls"]
63
+ text = parsed_json["text"]
64
+ new(
65
+ type: type,
66
+ id: id,
67
+ media_urls: media_urls,
68
+ text: text,
69
+ additional_properties: struct
70
+ )
71
+ end
72
+
73
+ # Serialize an instance of MessageEventMmsContent to a JSON object
74
+ #
75
+ # @return [String]
76
+ def to_json(*_args)
77
+ @_field_set&.to_json
78
+ end
79
+
80
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
81
+ # hash and check each fields type against the current object's property
82
+ # definitions.
83
+ #
84
+ # @param obj [Object]
85
+ # @return [Void]
86
+ def self.validate_raw(obj:)
87
+ obj.type.is_a?(String) != false || raise("Passed value for field obj.type is not the expected type, validation failed.")
88
+ obj.id.is_a?(String) != false || raise("Passed value for field obj.id is not the expected type, validation failed.")
89
+ obj.media_urls.is_a?(Array) != false || raise("Passed value for field obj.media_urls is not the expected type, validation failed.")
90
+ obj.text&.is_a?(String) != false || raise("Passed value for field obj.text is not the expected type, validation failed.")
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,104 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "button_clicked_data_button"
4
+ require "ostruct"
5
+ require "json"
6
+
7
+ module Pinnacle
8
+ module Types
9
+ # Button click event data received when a user clicks on an RCS button or quick
10
+ # reply (excluding `requestUserLocation` buttons).
11
+ # This event contains information about which button was clicked, how many times
12
+ # it's been clicked, and any payload or metadata attached to the button. Use this
13
+ # data to handle user interactions with your RCS messages.
14
+ class MessageEventRcsButtonData
15
+ # @return [String] Message type identifier.
16
+ attr_reader :type
17
+ # @return [String] Unique identifier of the message. This identifier is a string that always begins
18
+ # with the prefix `msg_`, for example: `msg_1234567890`. <br><br>
19
+ # To get the message details, use the [GET
20
+ # /messages/{id}](/api-reference/messages/get) endpoint.
21
+ attr_reader :id
22
+ # @return [Pinnacle::Types::ButtonClickedDataButton] Information about the button that was clicked.
23
+ attr_reader :button
24
+ # @return [String] ID of the message this button was sent in, or null if not available. To get the
25
+ # message details, use the [GET /messages/{id}](/api-reference/messages/get)
26
+ # endpoint.
27
+ attr_reader :message_id
28
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
29
+ attr_reader :additional_properties
30
+ # @return [Object]
31
+ attr_reader :_field_set
32
+ protected :_field_set
33
+
34
+ OMIT = Object.new
35
+
36
+ # @param type [String] Message type identifier.
37
+ # @param id [String] Unique identifier of the message. This identifier is a string that always begins
38
+ # with the prefix `msg_`, for example: `msg_1234567890`. <br><br>
39
+ # To get the message details, use the [GET
40
+ # /messages/{id}](/api-reference/messages/get) endpoint.
41
+ # @param button [Pinnacle::Types::ButtonClickedDataButton] Information about the button that was clicked.
42
+ # @param message_id [String] ID of the message this button was sent in, or null if not available. To get the
43
+ # message details, use the [GET /messages/{id}](/api-reference/messages/get)
44
+ # endpoint.
45
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
46
+ # @return [Pinnacle::Types::MessageEventRcsButtonData]
47
+ def initialize(type:, id:, button:, message_id: OMIT, additional_properties: nil)
48
+ @type = type
49
+ @id = id
50
+ @button = button
51
+ @message_id = message_id if message_id != OMIT
52
+ @additional_properties = additional_properties
53
+ @_field_set = { "type": type, "id": id, "button": button, "messageId": message_id }.reject do |_k, v|
54
+ v == OMIT
55
+ end
56
+ end
57
+
58
+ # Deserialize a JSON object to an instance of MessageEventRcsButtonData
59
+ #
60
+ # @param json_object [String]
61
+ # @return [Pinnacle::Types::MessageEventRcsButtonData]
62
+ def self.from_json(json_object:)
63
+ struct = JSON.parse(json_object, object_class: OpenStruct)
64
+ parsed_json = JSON.parse(json_object)
65
+ type = parsed_json["type"]
66
+ id = parsed_json["id"]
67
+ if parsed_json["button"].nil?
68
+ button = nil
69
+ else
70
+ button = parsed_json["button"].to_json
71
+ button = Pinnacle::Types::ButtonClickedDataButton.from_json(json_object: button)
72
+ end
73
+ message_id = parsed_json["messageId"]
74
+ new(
75
+ type: type,
76
+ id: id,
77
+ button: button,
78
+ message_id: message_id,
79
+ additional_properties: struct
80
+ )
81
+ end
82
+
83
+ # Serialize an instance of MessageEventRcsButtonData to a JSON object
84
+ #
85
+ # @return [String]
86
+ def to_json(*_args)
87
+ @_field_set&.to_json
88
+ end
89
+
90
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
91
+ # hash and check each fields type against the current object's property
92
+ # definitions.
93
+ #
94
+ # @param obj [Object]
95
+ # @return [Void]
96
+ def self.validate_raw(obj:)
97
+ obj.type.is_a?(String) != false || raise("Passed value for field obj.type is not the expected type, validation failed.")
98
+ obj.id.is_a?(String) != false || raise("Passed value for field obj.id is not the expected type, validation failed.")
99
+ Pinnacle::Types::ButtonClickedDataButton.validate_raw(obj: obj.button)
100
+ obj.message_id&.is_a?(String) != false || raise("Passed value for field obj.message_id is not the expected type, validation failed.")
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,99 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative "message_event_rcs_cards_content_cards_item"
4
+ require_relative "rich_button"
5
+ require "ostruct"
6
+ require "json"
7
+
8
+ module Pinnacle
9
+ module Types
10
+ # RCS message containing cards, each with its own title, subtitle, and/or buttons.
11
+ # Quick replies can also be added. <br>
12
+ # See [supported file
13
+ # types](https://app.pinnacle.sh/supported-file-types?type=RCS-CARD).
14
+ class MessageEventRcsCardsContent
15
+ # @return [String] Message type identifier.
16
+ attr_reader :type
17
+ # @return [String] Unique identifier of the message. This identifier is a string that always begins
18
+ # with the prefix `msg_`, for example: `msg_1234567890`. <br><br>
19
+ # To get the message details, use the [GET
20
+ # /messages/{id}](/api-reference/messages/get) endpoint.
21
+ attr_reader :id
22
+ # @return [Array<Pinnacle::Types::MessageEventRcsCardsContentCardsItem>] Collection of cards attached to the message.
23
+ attr_reader :cards
24
+ # @return [Array<Pinnacle::Types::RichButton>] List of interactive quick reply buttons in the message.
25
+ attr_reader :quick_replies
26
+ # @return [OpenStruct] Additional properties unmapped to the current class definition
27
+ attr_reader :additional_properties
28
+ # @return [Object]
29
+ attr_reader :_field_set
30
+ protected :_field_set
31
+
32
+ OMIT = Object.new
33
+
34
+ # @param type [String] Message type identifier.
35
+ # @param id [String] Unique identifier of the message. This identifier is a string that always begins
36
+ # with the prefix `msg_`, for example: `msg_1234567890`. <br><br>
37
+ # To get the message details, use the [GET
38
+ # /messages/{id}](/api-reference/messages/get) endpoint.
39
+ # @param cards [Array<Pinnacle::Types::MessageEventRcsCardsContentCardsItem>] Collection of cards attached to the message.
40
+ # @param quick_replies [Array<Pinnacle::Types::RichButton>] List of interactive quick reply buttons in the message.
41
+ # @param additional_properties [OpenStruct] Additional properties unmapped to the current class definition
42
+ # @return [Pinnacle::Types::MessageEventRcsCardsContent]
43
+ def initialize(type:, id:, cards:, quick_replies:, additional_properties: nil)
44
+ @type = type
45
+ @id = id
46
+ @cards = cards
47
+ @quick_replies = quick_replies
48
+ @additional_properties = additional_properties
49
+ @_field_set = { "type": type, "id": id, "cards": cards, "quickReplies": quick_replies }
50
+ end
51
+
52
+ # Deserialize a JSON object to an instance of MessageEventRcsCardsContent
53
+ #
54
+ # @param json_object [String]
55
+ # @return [Pinnacle::Types::MessageEventRcsCardsContent]
56
+ def self.from_json(json_object:)
57
+ struct = JSON.parse(json_object, object_class: OpenStruct)
58
+ parsed_json = JSON.parse(json_object)
59
+ type = parsed_json["type"]
60
+ id = parsed_json["id"]
61
+ cards = parsed_json["cards"]&.map do |item|
62
+ item = item.to_json
63
+ Pinnacle::Types::MessageEventRcsCardsContentCardsItem.from_json(json_object: item)
64
+ end
65
+ quick_replies = parsed_json["quickReplies"]&.map do |item|
66
+ item = item.to_json
67
+ Pinnacle::Types::RichButton.from_json(json_object: item)
68
+ end
69
+ new(
70
+ type: type,
71
+ id: id,
72
+ cards: cards,
73
+ quick_replies: quick_replies,
74
+ additional_properties: struct
75
+ )
76
+ end
77
+
78
+ # Serialize an instance of MessageEventRcsCardsContent to a JSON object
79
+ #
80
+ # @return [String]
81
+ def to_json(*_args)
82
+ @_field_set&.to_json
83
+ end
84
+
85
+ # Leveraged for Union-type generation, validate_raw attempts to parse the given
86
+ # hash and check each fields type against the current object's property
87
+ # definitions.
88
+ #
89
+ # @param obj [Object]
90
+ # @return [Void]
91
+ def self.validate_raw(obj:)
92
+ obj.type.is_a?(String) != false || raise("Passed value for field obj.type is not the expected type, validation failed.")
93
+ obj.id.is_a?(String) != false || raise("Passed value for field obj.id is not the expected type, validation failed.")
94
+ obj.cards.is_a?(Array) != false || raise("Passed value for field obj.cards is not the expected type, validation failed.")
95
+ obj.quick_replies.is_a?(Array) != false || raise("Passed value for field obj.quick_replies is not the expected type, validation failed.")
96
+ end
97
+ end
98
+ end
99
+ end