vonage 7.20.0 → 8.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.
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