vonage 7.20.0 → 8.0.0.beta

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 (79) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +87 -386
  3. data/lib/vonage/applications.rb +4 -12
  4. data/lib/vonage/client.rb +0 -42
  5. data/lib/vonage/client_error.rb +1 -1
  6. data/lib/vonage/config.rb +1 -9
  7. data/lib/vonage/errors.rb +20 -37
  8. data/lib/vonage/gsm7.rb +1 -1
  9. data/lib/vonage/jwt.rb +0 -17
  10. data/lib/vonage/keys.rb +0 -2
  11. data/lib/vonage/logger.rb +3 -5
  12. data/lib/vonage/messaging/channels/viber.rb +1 -8
  13. data/lib/vonage/messaging/channels/whats_app.rb +1 -3
  14. data/lib/vonage/messaging.rb +0 -11
  15. data/lib/vonage/namespace.rb +57 -128
  16. data/lib/vonage/numbers.rb +6 -29
  17. data/lib/vonage/server_error.rb +1 -1
  18. data/lib/vonage/signature.rb +5 -5
  19. data/lib/vonage/sms.rb +20 -20
  20. data/lib/vonage/version.rb +1 -1
  21. data/lib/vonage/video/archives.rb +53 -18
  22. data/lib/vonage/video/list_response.rb +11 -0
  23. data/lib/vonage/video/moderation.rb +22 -7
  24. data/lib/vonage/video/signals.rb +9 -4
  25. data/lib/vonage/video/streams.rb +12 -6
  26. data/lib/vonage/video.rb +13 -31
  27. data/lib/vonage/voice/actions/connect.rb +3 -27
  28. data/lib/vonage/voice/actions/conversation.rb +2 -2
  29. data/lib/vonage/voice/actions/pay.rb +107 -0
  30. data/lib/vonage/voice/actions/talk.rb +2 -11
  31. data/lib/vonage/voice/talk.rb +1 -11
  32. data/lib/vonage/voice.rb +0 -22
  33. data/lib/vonage.rb +0 -2
  34. data/vonage.gemspec +1 -2
  35. metadata +9 -65
  36. data/lib/vonage/api_error.rb +0 -33
  37. data/lib/vonage/meetings/applications.rb +0 -25
  38. data/lib/vonage/meetings/dial_in_numbers/list_response.rb +0 -11
  39. data/lib/vonage/meetings/dial_in_numbers.rb +0 -23
  40. data/lib/vonage/meetings/recordings.rb +0 -36
  41. data/lib/vonage/meetings/rooms/list_response.rb +0 -11
  42. data/lib/vonage/meetings/rooms.rb +0 -155
  43. data/lib/vonage/meetings/sessions/list_response.rb +0 -11
  44. data/lib/vonage/meetings/sessions.rb +0 -28
  45. data/lib/vonage/meetings/themes/list_response.rb +0 -11
  46. data/lib/vonage/meetings/themes.rb +0 -218
  47. data/lib/vonage/meetings.rb +0 -38
  48. data/lib/vonage/number_insight_2.rb +0 -36
  49. data/lib/vonage/proactive_connect/events/list_response.rb +0 -11
  50. data/lib/vonage/proactive_connect/events.rb +0 -68
  51. data/lib/vonage/proactive_connect/item.rb +0 -104
  52. data/lib/vonage/proactive_connect/items/file_response.rb +0 -32
  53. data/lib/vonage/proactive_connect/items/list_response.rb +0 -11
  54. data/lib/vonage/proactive_connect/items.rb +0 -107
  55. data/lib/vonage/proactive_connect/list.rb +0 -168
  56. data/lib/vonage/proactive_connect/lists/list_response.rb +0 -11
  57. data/lib/vonage/proactive_connect/lists.rb +0 -35
  58. data/lib/vonage/proactive_connect.rb +0 -33
  59. data/lib/vonage/subaccounts/balance_transfers/list_response.rb +0 -11
  60. data/lib/vonage/subaccounts/credit_transfers/list_response.rb +0 -11
  61. data/lib/vonage/subaccounts/list_response.rb +0 -15
  62. data/lib/vonage/subaccounts.rb +0 -203
  63. data/lib/vonage/users/list_response.rb +0 -11
  64. data/lib/vonage/users.rb +0 -156
  65. data/lib/vonage/verify2/channels/email.rb +0 -36
  66. data/lib/vonage/verify2/channels/silent_auth.rb +0 -45
  67. data/lib/vonage/verify2/channels/sms.rb +0 -53
  68. data/lib/vonage/verify2/channels/voice.rb +0 -32
  69. data/lib/vonage/verify2/channels/whats_app.rb +0 -38
  70. data/lib/vonage/verify2/channels/whats_app_interactive.rb +0 -32
  71. data/lib/vonage/verify2/start_verification_options.rb +0 -62
  72. data/lib/vonage/verify2/workflow.rb +0 -39
  73. data/lib/vonage/verify2/workflow_builder.rb +0 -25
  74. data/lib/vonage/verify2.rb +0 -93
  75. data/lib/vonage/video/archives/list_response.rb +0 -11
  76. data/lib/vonage/video/broadcasts/list_response.rb +0 -11
  77. data/lib/vonage/video/broadcasts.rb +0 -75
  78. data/lib/vonage/video/sip.rb +0 -48
  79. data/lib/vonage/video/streams/list_response.rb +0 -11
@@ -1,155 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
-
4
- module Vonage
5
- class Meetings::Rooms < Namespace
6
- extend T::Sig
7
-
8
- self.authentication = BearerToken
9
-
10
- self.request_body = JSON
11
-
12
- self.host = :vonage_host
13
-
14
- # Get a list of rooms associated with the Vonage application.
15
- #
16
- # @param [optional, Integer] :start_id
17
- #
18
- # @param [optional, Integer] :end_id
19
- #
20
- # @param [optional, Integer] :page_size
21
- #
22
- # @return [ListResponse]
23
- #
24
- # @see https://developer.vonage.com/en/api/meetings#getRooms
25
- def list(**params)
26
- path = "/v1/meetings/rooms"
27
- path += "?#{Params.encode(params)}" unless params.empty?
28
-
29
- request(path, response_class: ListResponse)
30
- end
31
-
32
- # Return information for specified room.
33
- #
34
- # @param [required, String] room_id
35
- # The id of the room for which the info should be returned
36
- #
37
- # @return [Response]
38
- #
39
- # @see https://developer.vonage.com/en/api/meetings#getRoom
40
- def info(room_id:)
41
- request("/v1/meetings/rooms/" + room_id)
42
- end
43
-
44
- # Create a new room.
45
- #
46
- # @param [required, String] :display_name
47
- #
48
- # @param [optional, String] :metadata
49
- # Free text that can be attached to a room. This will be passed in the form of a header in events related to this room.
50
- #
51
- # @param [optional, String] :type
52
- # The type of room. Must be one of `instant` (the default) or `long_term`.
53
- #
54
- # @param [String(date)] :expires_at
55
- # The time for when the room will be expired, expressed in ISO 8601 format.
56
- # The value must be greater than 10 minutes from now.
57
- # Must be set if `type` is `long_term`. Should not be set if `type` is `instant`
58
- #
59
- # @param [optional, Boolean] :expire_after_use
60
- # Close the room after a session ends. Only relevant for rooms where the `type` is `long_term`
61
- #
62
- # @param [optional, string(uuid)] :theme_id
63
- # When specified, the meeting room will use the theme indicated by the ID.
64
- #
65
- # @param [optional, String] :join_approval_level
66
- # The level of approval needed to join the meeting in the room. Must be one of: `none`, `after_owner_only`, `explicit_approval`
67
- #
68
- # @param [optional, Hash] :recording_options
69
- # @option :recording_options [Boolean] :auto_record Automatically record all sessions in this room. Recording cannot be stopped when this is set to `true`.
70
- # @option :recording_options [Boolean] :record_only_owner Record only the owner screen or any share screen of the video.
71
- #
72
- # @param [optional, Hash] :initial_join_options
73
- # @option :initial_join_options [String] :microphone_state
74
- # Set the default microphone option for users in the pre-join screen of this room.
75
- # Must be one of: `on`, `off`, `default`
76
- #
77
- # @param [optional, Hash] :callback_urls Provides callback URLs to listen to events. If specified, over-rides the callback URLs specified at Application-level
78
- # @option :callback_urls [String] :rooms_callback_url Callback url for rooms events
79
- # @option :callback_urls [String] :sessions_callback_url Callback url for sessions events
80
- # @option :callback_urls [String] :recordings_callback_url Callback url for recordings events
81
- #
82
- # @param [optional, Hash] :available_features
83
- # @option :available_features [Boolean] :is_recording_available Determine if recording feature is available in the UI (default `true`)
84
- # @option :available_features [Boolean] :is_chat_available Determine if chat feature is available in the UI (default `true`)
85
- # @option :available_features [Boolean] :is_whiteboard_available Determine if whiteboard feature is available in the UI (default `true`)
86
- # @option :available_features [Boolean] :is_locale_switcher_available Determine if locale switche feature is available in the UI (default `true`)
87
- # @option :available_features [Boolean] :is_captions_available Determine if captions feature is available in the UI
88
- #
89
- # @param [optional, Hash] :ui_settings Provides options to customize the user interface
90
- # @option :ui_settings [String] :language
91
- # The desired language of the UI. The default is `en` (English).
92
- # Must be one of: `ar`, `pt-br`, `ca`, `zh-tw`, `zh-cn`, `en`, `fr`, `de`, `he`, `it`, `es`
93
- #
94
- # @return [Response]
95
- #
96
- # @see https://developer.vonage.com/en/api/meetings#createRoom
97
- def create(display_name:, **params)
98
- request(
99
- "/v1/meetings/rooms",
100
- params: params.merge({ display_name: display_name }),
101
- type: Post
102
- )
103
- end
104
-
105
- # Update an existing room.
106
- # Although paramaters (other than `room_id`) are optional, at least one other parameter must be provided or an error
107
- # response will be received.
108
- #
109
- # @param [required, String] room_id The ID of the Room to be updated
110
- #
111
- # @param [optional, String(date)] :expires_at
112
- # The time for when the room will be expired, expressed in ISO 8601 format.
113
- # Only relevant for rooms where the `type` is `long_term``
114
- #
115
- # @param [optional, Boolean] :expire_after_use
116
- # Close the room after a session ends. Only relevant for rooms where the `type` is `long_term`
117
- #
118
- # @param [optional, string(uuid)] :theme_id
119
- # When specified, the meeting room will use the theme indicated by the ID.
120
- #
121
- # @param [optional, String] :join_approval_level
122
- # The level of approval needed to join the meeting in the room. Must be one of: `none`, `after_owner_only`, `explicit_approval`
123
- #
124
- # @param [optional, Hash] :initial_join_options
125
- # @option :initial_join_options [String] :microphone_state
126
- # Set the default microphone option for users in the pre-join screen of this room.
127
- # Must be one of: `on`, `off`, `default`
128
- #
129
- # @param [optional, Hash] :callback_urls Provides callback URLs to listen to events. If specified, over-rides the callback URLs specified at Application-level
130
- # @option :callback_urls [String] :rooms_callback_url Callback url for rooms events
131
- # @option :callback_urls [String] :sessions_callback_url Callback url for sessions events
132
- # @option :callback_urls [String] :recordings_callback_url Callback url for recordings events
133
- #
134
- # @param [optional, Hash] :available_features
135
- # @option :available_features [Boolean] :is_recording_available Determine if recording feature is available in the UI (default `true`)
136
- # @option :available_features [Boolean] :is_chat_available Determine if chat feature is available in the UI (default `true`)
137
- # @option :available_features [Boolean] :is_whiteboard_available Determine if whiteboard feature is available in the UI (default `true`)
138
- # @option :available_features [Boolean] :is_locale_switcher_available Determine if locale switche feature is available in the UI (default `true`)
139
- # @option :available_features [Boolean] :is_captions_available Determine if captions feature is available in the UI
140
- #
141
- # @return [Response]
142
- #
143
- # @see https://developer.vonage.com/en/api/meetings#updateRoom
144
- def update(room_id:, **params)
145
- raise ArgumentError, 'must provide at least one other param in addition to :room_id' if params.empty?
146
- request(
147
- "/v1/meetings/rooms/" + room_id,
148
- params: {
149
- update_details: params
150
- },
151
- type: Patch
152
- )
153
- end
154
- end
155
- end
@@ -1,11 +0,0 @@
1
- # typed: true
2
-
3
- class Vonage::Meetings::Sessions::ListResponse < Vonage::Response
4
- include Enumerable
5
-
6
- def each
7
- return enum_for(:each) unless block_given?
8
-
9
- @entity._embedded.recordings.each { |item| yield item }
10
- end
11
- end
@@ -1,28 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
-
4
- module Vonage
5
- class Meetings::Sessions < Namespace
6
- extend T::Sig
7
-
8
- self.authentication = BearerToken
9
-
10
- self.request_body = JSON
11
-
12
- self.host = :vonage_host
13
-
14
- # Return a list of recordings for a specified session.
15
- #
16
- # @param [required, String] session_id The id of the session for which the recordings list should be returned
17
- #
18
- # @return [ListResponse]
19
- #
20
- # @see https://developer.vonage.com/en/api/meetings#getSessionRecordings
21
- def list_recordings(session_id:)
22
- request(
23
- "/v1/meetings/sessions/" + session_id + "/recordings",
24
- response_class: ListResponse
25
- )
26
- end
27
- end
28
- end
@@ -1,11 +0,0 @@
1
- # typed: true
2
-
3
- class Vonage::Meetings::Themes::ListResponse < Vonage::Response
4
- include Enumerable
5
-
6
- def each
7
- return enum_for(:each) unless block_given?
8
-
9
- @entity.each { |item| yield item }
10
- end
11
- end
@@ -1,218 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
-
4
- module Vonage
5
- class Meetings::Themes < Namespace
6
- extend T::Sig
7
-
8
- self.authentication = BearerToken
9
-
10
- self.request_body = JSON
11
-
12
- self.host = :vonage_host
13
-
14
- # Get a list of themes associated with the Vonage application.
15
- #
16
- # @return [ListResponse]
17
- #
18
- # @see https://developer.vonage.com/en/api/meetings#getThemes
19
- def list
20
- request("/v1/meetings/themes", response_class: ListResponse)
21
- end
22
-
23
- # Return information for specified theme.
24
- #
25
- # @param [required, String] theme_id The id of the theme for which the info should be returned
26
- #
27
- # @return [Response]
28
- #
29
- # @see https://developer.vonage.com/en/api/meetings#getThemeById
30
- def info(theme_id:)
31
- request("/v1/meetings/themes/" + theme_id)
32
- end
33
-
34
- # Create a new theme.
35
- #
36
- # @param [required, String] :main_color
37
- # The main color that will be used for the meeting room.
38
- #
39
- # @param [required, String] :brand_text
40
- # The text that will appear on the meeting homepage, in the case that there is no brand image
41
- #
42
- # @param [optional, String] :theme_name
43
- # The name of the theme (must be unique). If null, a UUID will automatically be generated
44
- #
45
- # @param [optional, String] :short_company_url
46
- # The URL that will represent every meeting room with this theme. The value must be unique across Vonage
47
- #
48
- # @return [Response]
49
- #
50
- # @see https://developer.vonage.com/en/api/meetings#createTheme
51
- def create(main_color:, brand_text:, **params)
52
- request(
53
- "/v1/meetings/themes",
54
- params: params.merge(main_color: main_color, brand_text: brand_text),
55
- type: Post
56
- )
57
- end
58
-
59
- # Update an existing theme.
60
- #
61
- # @param [required, String] theme_id The id of the theme to be updated
62
- #
63
- # @param [required, String] :main_color
64
- # The main color that will be used for the meeting room.
65
- #
66
- # @param [required, String] :brand_text
67
- # The text that will appear on the meeting homepage, in the case that there is no brand image
68
- #
69
- # @param [optional, String] :theme_name
70
- # The name of the theme (must be unique). If null, a UUID will automatically be generated
71
- #
72
- # @param [optional, String] :short_company_url
73
- # The URL that will represent every meeting room with this theme. The value must be unique across Vonage
74
- #
75
- # @return [Response]
76
- #
77
- # @see https://developer.vonage.com/en/api/meetings#updateTheme
78
- def update(theme_id:, **params)
79
- request(
80
- "/v1/meetings/themes/" + theme_id,
81
- params: {
82
- update_details: params
83
- },
84
- type: Patch
85
- )
86
- end
87
-
88
- # Delete an existing theme.
89
- #
90
- # @param [required, String] :theme_id The id of the theme to be deleted
91
- #
92
- # @param [optional, Boolean] :force. Set to `true` to force delete a theme currently being used for a room, or as
93
- # a default theme. (Defaults to `false`)
94
- #
95
- # @return [Response]
96
- #
97
- # @see https://developer.vonage.com/en/api/meetings#deleteTheme
98
- def delete(theme_id:, force: false)
99
- request(
100
- "/v1/meetings/themes/" + theme_id + "?force=#{force}",
101
- type: Delete
102
- )
103
- end
104
-
105
- # Get a list of rooms that are associated with a theme id.
106
- #
107
- # @param [required, String] theme_id THe ID of the theme to search for rooms associated with.
108
- #
109
- # @param [optional, Integer] :start_id
110
- #
111
- # @param [optional, Integer] :end_id
112
- #
113
- # @param [optional, Integer] :page_size
114
- #
115
- # @return [Response]
116
- #
117
- # @see https://developer.vonage.com/en/api/meetings#getRoomsByThemeId
118
- def list_rooms(theme_id:, **params)
119
- path = "/v1/meetings/themes/" + theme_id + "/rooms"
120
- path += "?#{Params.encode(params)}" unless params.empty?
121
-
122
- request(path, response_class: Meetings::Rooms::ListResponse)
123
- end
124
-
125
- # Set a logo for a theme.
126
- #
127
- # @param [required, String] :theme_id The ID of the theme for which the logo should be set
128
- #
129
- # @param [required, String] :filepath
130
- # The filepath of the logo file. Logo files must conform to the following requirements:
131
- # - Format: PNG
132
- # - Maximum size: 1MB
133
- # - Background must be transparent
134
- # - Dimensions:
135
- # - 1 px - 300 px (`white` and `colored` logos)
136
- # - 16 x 16 - 32 x 32 and must be square (favicon)
137
- #
138
- # @param [required, String] :logo_type
139
- # The type of logo to be set. Must be one of `white`, `colored`, `favicon`
140
- #
141
- # @return [Response]
142
- #
143
- # @see https://developer.vonage.com/en/meetings/guides/theme-management#uploading-icons-and-logos
144
- # @see https://developer.vonage.com/en/api/meetings#getUploadUrlsForTheme
145
- # @see https://developer.vonage.com/en/api/meetings#finalizeLogosForTheme
146
- #
147
- # TODO: add type signature
148
- def set_logo(theme_id:, filepath:, logo_type:)
149
- pn = Pathname.new(filepath)
150
- valid_logo_types = ['white', 'colored', 'favicon']
151
- raise ArgumentError, ':filepath not for a file' unless pn.file?
152
- raise ArgumentError, 'file at :filepath not readable' unless pn.readable?
153
- raise ArgumentError, "logo_type: must be one of #{valid_logo_types}" unless valid_logo_types.include?(logo_type)
154
-
155
- logo_upload_credentials = get_logo_upload_credentials
156
-
157
- filtered_logo_upload_credentials = logo_upload_credentials.select {|cred| cred.fields.logo_type == logo_type }.first
158
-
159
- upload_logo_file(filepath: filepath, credentials: filtered_logo_upload_credentials)
160
-
161
- finalize_logos(theme_id: theme_id, keys: [filtered_logo_upload_credentials.fields.key])
162
- end
163
-
164
- private
165
-
166
- def get_logo_upload_credentials
167
- request("/v1/meetings/themes/logos-upload-urls", response_class: ListResponse)
168
- end
169
-
170
- def upload_logo_file(filepath:, credentials:)
171
- pn = Pathname.new(filepath)
172
-
173
- params = format_s3_upload_credentials(credentials)
174
-
175
- multipart_post_request(
176
- nil,
177
- filepath: filepath,
178
- file_name: pn.basename,
179
- mime_type: credentials.fields.content_type,
180
- params: params,
181
- override_uri: credentials.url,
182
- no_auth: true
183
- )
184
- end
185
-
186
- def finalize_logos(theme_id:, keys: [])
187
- request(
188
- "/v1/meetings/themes/" + theme_id + "/finalizeLogos",
189
- params: {
190
- keys: keys
191
- },
192
- type: Put
193
- )
194
- end
195
-
196
- def format_s3_upload_credentials(credentials)
197
- credentials_key_map = {
198
- content_type: "Content-Type",
199
- logo_type: "logoType",
200
- x_amz_algorithm: "X-Amz-Algorithm",
201
- x_amz_credential: "X-Amz-Credential",
202
- x_amz_date: "X-Amz-Date",
203
- x_amz_security_token: "X-Amz-Security-Token",
204
- policy: "Policy",
205
- x_amz_signature: "X-Amz-Signature"
206
- }
207
-
208
- params = credentials.fields.attributes
209
- params.transform_keys do |k|
210
- if credentials_key_map.keys.include?(k)
211
- credentials_key_map[k]
212
- else
213
- k.to_s
214
- end
215
- end
216
- end
217
- end
218
- end
@@ -1,38 +0,0 @@
1
- # typed: strict
2
- # frozen_string_literal: true
3
-
4
- module Vonage
5
- class Meetings < Namespace
6
- extend T::Sig
7
-
8
- sig { returns(T.nilable(Vonage::Meetings::Rooms)) }
9
- def rooms
10
- @rooms ||= Rooms.new(@config)
11
- end
12
-
13
- sig { returns(T.nilable(Vonage::Meetings::Recordings)) }
14
- def recordings
15
- @recordings ||= Recordings.new(@config)
16
- end
17
-
18
- sig { returns(T.nilable(Vonage::Meetings::Sessions)) }
19
- def sessions
20
- @sessions ||= Sessions.new(@config)
21
- end
22
-
23
- sig { returns(T.nilable(Vonage::Meetings::Themes)) }
24
- def themes
25
- @themes ||= Themes.new(@config)
26
- end
27
-
28
- sig { returns(T.nilable(Vonage::Meetings::Applications)) }
29
- def applications
30
- @applications ||= Applications.new(@config)
31
- end
32
-
33
- sig { returns(T.nilable(Vonage::Meetings::DialInNumbers)) }
34
- def dial_in_numbers
35
- @dial_in_numbers ||= DialInNumbers.new(@config)
36
- end
37
- end
38
- end
@@ -1,36 +0,0 @@
1
- # typed: strict
2
- # frozen_string_literal: true
3
-
4
- module Vonage
5
- class NumberInsight2 < Namespace
6
- extend T::Sig
7
-
8
- self.authentication = Basic
9
-
10
- self.request_body = JSON
11
-
12
- # Make fraud check requests with a phone number by looking up fraud score and/or by checking sim swap status.
13
- #
14
- # @example
15
- # response = client.number_insight_2.fraud_check(type: 'phone', phone: '447900000000', insights: ['fraud_score'])
16
- #
17
- # @param [required, String] :type The type of number to check.
18
- # Accepted value is “phone” when a phone number is provided.
19
- #
20
- # @param [required, String] :phone A single phone number that you need insight about in the E.164 format.
21
- #
22
- # @param [required, Array] :insights An array of strings indicating the fraud check insights required for the number.
23
- # Must be least one of: `fraud_score`, `sim_swap`
24
- #
25
- # @return [Response]
26
- #
27
- # @see https://developer.vonage.com/en/api/number-insight.v2#fraud_check
28
- #
29
- sig { params(type: String, phone: String, insights: T::Array[String]).returns(Vonage::Response) }
30
- def fraud_check(type:, phone:, insights:)
31
- raise ArgumentError.new("`insights` must not be an empty") if insights.empty?
32
-
33
- request('/v2/ni', params: {type: type, phone: phone, insights: insights}, type: Post)
34
- end
35
- end
36
- end
@@ -1,11 +0,0 @@
1
- # typed: true
2
-
3
- class Vonage::ProactiveConnect::Events::ListResponse < Vonage::Response
4
- include Enumerable
5
-
6
- def each
7
- return enum_for(:each) unless block_given?
8
-
9
- @entity._embedded.events.each { |item| yield item }
10
- end
11
- end
@@ -1,68 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
-
4
- module Vonage
5
- class ProactiveConnect::Events < Namespace
6
- extend T::Sig
7
-
8
- self.authentication = BearerToken
9
-
10
- self.host = :vonage_host
11
-
12
- # Find all events
13
- #
14
- # @example
15
- # response = proactive_connect.events.list
16
- #
17
- # @param [optional, String] :page
18
- # Page of results to jump to
19
- #
20
- # @param [optional, String] :page_size
21
- # Number of results per page
22
- #
23
- # @param [optional, String] order
24
- # Sort in either ascending (asc, the default) or descending (desc) order
25
- #
26
- # @param [optional, String] :run_id
27
- # Run IDs to filter by, if not specified, returns events for any run id
28
- #
29
- # @param [optional, String] :type
30
- # Event types to filter by
31
- #
32
- # @param [optional, String] action_id
33
- # Action IDs to filter by.
34
- #
35
- # @param [optional, String] :invocation_id
36
- # Invocation IDs to filter by
37
- #
38
- # @param [optional, String] :recipient_id
39
- # Recipient IDs to filter by
40
- #
41
- # @param [optional, String] :run_item_id
42
- # Run item IDs to filter by
43
- #
44
- # @param [optional, String] src_ctx
45
- # The name of the segment / matcher the item / event to filter by (exact string)
46
- #
47
- # @param [optional, String] :src_type
48
- # Source types to filter by
49
- #
50
- # @param [optional, String] :trace_id
51
- # Trace IDs to filter events by
52
- #
53
- # @param [optional, String] date_start
54
- # ISO-8601 formatted date for when to begin events filter
55
- #
56
- # @param [optional, String] :date_end
57
- # ISO-8601 formatted date for when to end events filter
58
- #
59
- # @see https://developer.vonage.com/en/api/proactive-connect#eventsFindAll
60
- #
61
- def list(**params)
62
- path = "/v0.1/bulk/events"
63
- path += "?#{Params.encode(params)}" unless params.empty?
64
-
65
- request(path, response_class: ListResponse)
66
- end
67
- end
68
- end
@@ -1,104 +0,0 @@
1
- # typed: true
2
- # frozen_string_literal: true
3
-
4
- module Vonage
5
- class ProactiveConnect::Item < Namespace
6
- extend T::Sig
7
-
8
- self.authentication = BearerToken
9
-
10
- self.host = :vonage_host
11
-
12
- self.request_body = JSON
13
-
14
- # Create a list item
15
- #
16
- # @example
17
- # response = proactive_connect.item.create(list_id: 'e546eebe-8e23-4e4d-bb7c-29d4700c9865', data: {name: 'Joe Bloggs', email: 'joe@email.com'})
18
- #
19
- # @param [required, String] :list_id
20
- # Unique identifier for the list
21
- #
22
- # @param [required, Hash] :data
23
- # A hash of data containing the item's data attributes and values
24
- #
25
- # @see https://developer.vonage.com/en/api/proactive-connect#itemsCreate
26
- #
27
- def create(list_id:, data:)
28
- raise ArgumentError.new(":data must be a Hash") unless data.is_a? Hash
29
- request(
30
- "/v0.1/bulk/lists/#{list_id}/items",
31
- params: { data: data },
32
- type: Post
33
- )
34
- end
35
-
36
- # Get list item by id
37
- #
38
- # @example
39
- # response = proactive_connect.item.find(list_id: 'e546eebe-8e23-4e4d-bb7c-29d4700c9865', item_id: 'd97ebf20-e4de-4e50-921a-7bb4dceb373a')
40
- #
41
- # @param [required, String] :list_id
42
- # Unique identifier for the list
43
- #
44
- # @param [required, String] :item_id
45
- # Unique identifier for the item
46
- #
47
- # @see https://developer.vonage.com/en/api/proactive-connect#itemsGet
48
- #
49
- def find(list_id:, item_id:)
50
- request("/v0.1/bulk/lists/#{list_id}/items/#{item_id}")
51
- end
52
-
53
- # Update list item
54
- #
55
- # @example
56
- # response = proactive_connect.item.create(
57
- # list_id: 'e546eebe-8e23-4e4d-bb7c-29d4700c9865',
58
- # item_id: 'd97ebf20-e4de-4e50-921a-7bb4dceb373a',
59
- # data: {name: 'Jane Bloggs', email: 'joe@email.com'}
60
- # )
61
- #
62
- # @param [required, String] :list_id
63
- # Unique identifier for the list
64
- #
65
- # @param [required, String] :item_id
66
- # Unique identifier for the item
67
- #
68
- # @param [required, Hash] :data
69
- # A hash of data containing the item's data attributes and values
70
- # All attributes for the item must be passed, even ones for which the value is not changing.
71
- # If an attribute is omitted, existing data for that attribute will be deleted.
72
- #
73
- # @see https://developer.vonage.com/en/api/proactive-connect#itemsUpdate
74
- #
75
- def update(list_id:, item_id:, data:)
76
- raise ArgumentError.new(":data must be a Hash") unless data.is_a? Hash
77
- request(
78
- "/v0.1/bulk/lists/#{list_id}/items/#{item_id}",
79
- params: { data: data },
80
- type: Put
81
- )
82
- end
83
-
84
- # Delete list item
85
- #
86
- # @example
87
- # response = proactive_connect.item.delete(list_id: 'e546eebe-8e23-4e4d-bb7c-29d4700c9865', item_id: 'd97ebf20-e4de-4e50-921a-7bb4dceb373a')
88
- #
89
- # @param [required, String] :list_id
90
- # Unique identifier for the list
91
- #
92
- # @param [required, String] :item_id
93
- # Unique identifier for the item
94
- #
95
- # @see https://developer.vonage.com/en/api/proactive-connect#itemsDelete
96
- #
97
- def delete(list_id:, item_id:)
98
- request(
99
- "/v0.1/bulk/lists/#{list_id}/items/#{item_id}",
100
- type: Delete
101
- )
102
- end
103
- end
104
- end