twilio-ruby 5.57.0 → 5.58.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (46) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -0
  3. data/.travis.yml +24 -7
  4. data/CHANGES.md +84 -0
  5. data/Gemfile +1 -0
  6. data/README.md +2 -2
  7. data/examples/examples.rb +1 -1
  8. data/lib/twilio-ruby/http/http_client.rb +1 -1
  9. data/lib/twilio-ruby/rest/api/v2010/account/call.rb +12 -3
  10. data/lib/twilio-ruby/rest/api/v2010/account/conference/participant.rb +4 -1
  11. data/lib/twilio-ruby/rest/api/v2010/account/conference/recording.rb +1 -1
  12. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/credential_list_mapping.rb +11 -11
  13. data/lib/twilio-ruby/rest/api/v2010/account/sip/domain/ip_access_control_list_mapping.rb +11 -11
  14. data/lib/twilio-ruby/rest/conversations/v1/conversation/message.rb +12 -5
  15. data/lib/twilio-ruby/rest/conversations/v1/participant_conversation.rb +312 -0
  16. data/lib/twilio-ruby/rest/conversations/v1/service/conversation/message.rb +12 -5
  17. data/lib/twilio-ruby/rest/conversations/v1/service/participant_conversation.rb +324 -0
  18. data/lib/twilio-ruby/rest/conversations/v1/service/user/user_conversation.rb +2 -2
  19. data/lib/twilio-ruby/rest/conversations/v1/service.rb +23 -0
  20. data/lib/twilio-ruby/rest/conversations/v1/user/user_conversation.rb +2 -2
  21. data/lib/twilio-ruby/rest/conversations/v1.rb +7 -0
  22. data/lib/twilio-ruby/rest/conversations.rb +6 -0
  23. data/lib/twilio-ruby/rest/insights/v1/call_summaries.rb +434 -0
  24. data/lib/twilio-ruby/rest/insights/v1.rb +7 -0
  25. data/lib/twilio-ruby/rest/insights.rb +6 -0
  26. data/lib/twilio-ruby/rest/messaging/v1/brand_registration.rb +23 -1
  27. data/lib/twilio-ruby/rest/messaging/v1/service/us_app_to_person.rb +9 -2
  28. data/lib/twilio-ruby/rest/messaging/v1/service/us_app_to_person_usecase.rb +6 -2
  29. data/lib/twilio-ruby/rest/pricing/v2/country.rb +280 -0
  30. data/lib/twilio-ruby/rest/pricing/v2/number.rb +225 -0
  31. data/lib/twilio-ruby/rest/pricing/v2.rb +37 -0
  32. data/lib/twilio-ruby/rest/pricing.rb +19 -0
  33. data/lib/twilio-ruby/rest/taskrouter/v1/workspace/activity.rb +7 -0
  34. data/lib/twilio-ruby/rest/taskrouter/v1/workspace.rb +30 -20
  35. data/lib/twilio-ruby/rest/verify/v2/service/entity/challenge/notification.rb +6 -2
  36. data/lib/twilio-ruby/rest/verify/v2/service/entity/challenge.rb +36 -11
  37. data/lib/twilio-ruby/rest/verify/v2/service/entity/factor.rb +11 -9
  38. data/lib/twilio-ruby/rest/verify/v2/service/entity/new_factor.rb +8 -8
  39. data/lib/twilio-ruby/rest/verify/v2/service/entity.rb +7 -3
  40. data/lib/twilio-ruby/rest/verify/v2/service/webhook.rb +24 -5
  41. data/lib/twilio-ruby/rest/verify/v2/verification_template.rb +206 -0
  42. data/lib/twilio-ruby/rest/verify/v2.rb +7 -0
  43. data/lib/twilio-ruby/rest/verify.rb +6 -0
  44. data/lib/twilio-ruby/version.rb +1 -1
  45. data/sonar-project.properties +13 -0
  46. metadata +9 -2
@@ -16,6 +16,7 @@ module Twilio
16
16
  super
17
17
  @version = 'v1'
18
18
  @calls = nil
19
+ @call_summaries = nil
19
20
  @rooms = nil
20
21
  end
21
22
 
@@ -34,6 +35,12 @@ module Twilio
34
35
  end
35
36
  end
36
37
 
38
+ ##
39
+ # @return [Twilio::REST::Insights::V1::CallSummariesContext]
40
+ def call_summaries
41
+ @call_summaries ||= CallSummariesList.new self
42
+ end
43
+
37
44
  ##
38
45
  # @param [String] room_sid The SID of the Room resource.
39
46
  # @return [Twilio::REST::Insights::V1::RoomContext] if room_sid was passed.
@@ -36,6 +36,12 @@ module Twilio
36
36
  self.v1.calls(sid)
37
37
  end
38
38
 
39
+ ##
40
+ # @return [Twilio::REST::Insights::V1::CallSummariesInstance]
41
+ def call_summaries
42
+ self.v1.call_summaries()
43
+ end
44
+
39
45
  ##
40
46
  # @param [String] room_sid Unique identifier for the room.
41
47
  # @return [Twilio::REST::Insights::V1::RoomInstance] if room_sid was passed.
@@ -109,11 +109,19 @@ module Twilio
109
109
  # Create the BrandRegistrationInstance
110
110
  # @param [String] customer_profile_bundle_sid Customer Profile Bundle Sid.
111
111
  # @param [String] a2p_profile_bundle_sid A2P Messaging Profile Bundle Sid.
112
+ # @param [String] brand_type Type of brand being created. One of: "STANDARD",
113
+ # "STARTER". STARTER is for low volume, starter use cases. STANDARD is for all
114
+ # other use cases.
115
+ # @param [Boolean] mock A boolean that specifies whether brand should be a mock or
116
+ # not. If true, brand will be registered as a mock brand. Defaults to false if no
117
+ # value is provided.
112
118
  # @return [BrandRegistrationInstance] Created BrandRegistrationInstance
113
- def create(customer_profile_bundle_sid: nil, a2p_profile_bundle_sid: nil)
119
+ def create(customer_profile_bundle_sid: nil, a2p_profile_bundle_sid: nil, brand_type: :unset, mock: :unset)
114
120
  data = Twilio::Values.of({
115
121
  'CustomerProfileBundleSid' => customer_profile_bundle_sid,
116
122
  'A2PProfileBundleSid' => a2p_profile_bundle_sid,
123
+ 'BrandType' => brand_type,
124
+ 'Mock' => mock,
117
125
  })
118
126
 
119
127
  payload = @version.create('POST', @uri, data: data)
@@ -219,11 +227,13 @@ module Twilio
219
227
  'a2p_profile_bundle_sid' => payload['a2p_profile_bundle_sid'],
220
228
  'date_created' => Twilio.deserialize_iso8601_datetime(payload['date_created']),
221
229
  'date_updated' => Twilio.deserialize_iso8601_datetime(payload['date_updated']),
230
+ 'brand_type' => payload['brand_type'],
222
231
  'status' => payload['status'],
223
232
  'tcr_id' => payload['tcr_id'],
224
233
  'failure_reason' => payload['failure_reason'],
225
234
  'url' => payload['url'],
226
235
  'brand_score' => payload['brand_score'] == nil ? payload['brand_score'] : payload['brand_score'].to_i,
236
+ 'mock' => payload['mock'],
227
237
  }
228
238
 
229
239
  # Context
@@ -278,6 +288,12 @@ module Twilio
278
288
  @properties['date_updated']
279
289
  end
280
290
 
291
+ ##
292
+ # @return [String] Type of brand. One of: "STANDARD", "STARTER".
293
+ def brand_type
294
+ @properties['brand_type']
295
+ end
296
+
281
297
  ##
282
298
  # @return [brand_registration.Status] Brand Registration status
283
299
  def status
@@ -308,6 +324,12 @@ module Twilio
308
324
  @properties['brand_score']
309
325
  end
310
326
 
327
+ ##
328
+ # @return [Boolean] A boolean that specifies whether brand should be a mock or not. If true, brand will be registered as a mock brand. Defaults to false if no value is provided.
329
+ def mock
330
+ @properties['mock']
331
+ end
332
+
311
333
  ##
312
334
  # Fetch the BrandRegistrationInstance
313
335
  # @return [BrandRegistrationInstance] Fetched BrandRegistrationInstance
@@ -33,8 +33,8 @@ module Twilio
33
33
  # Create the UsAppToPersonInstance
34
34
  # @param [String] brand_registration_sid A2P Brand Registration SID
35
35
  # @param [String] description A short description of what this SMS campaign does.
36
- # @param [Array[String]] message_samples Message samples, up to 5 sample messages,
37
- # <=1024 chars each.
36
+ # @param [Array[String]] message_samples Message samples, at least 2 and up to 5
37
+ # sample messages, <=1024 chars each.
38
38
  # @param [String] us_app_to_person_usecase A2P Campaign Use Case. Examples: [ 2FA,
39
39
  # EMERGENCY, MARKETING..]
40
40
  # @param [Boolean] has_embedded_links Indicates that this SMS campaign will send
@@ -273,6 +273,7 @@ module Twilio
273
273
  'date_created' => Twilio.deserialize_iso8601_datetime(payload['date_created']),
274
274
  'date_updated' => Twilio.deserialize_iso8601_datetime(payload['date_updated']),
275
275
  'url' => payload['url'],
276
+ 'mock' => payload['mock'],
276
277
  }
277
278
 
278
279
  # Context
@@ -391,6 +392,12 @@ module Twilio
391
392
  @properties['url']
392
393
  end
393
394
 
395
+ ##
396
+ # @return [Boolean] A boolean that specifies whether campaign is a mock or not.
397
+ def mock
398
+ @properties['mock']
399
+ end
400
+
394
401
  ##
395
402
  # Delete the UsAppToPersonInstance
396
403
  # @return [Boolean] true if delete succeeds, false otherwise
@@ -30,9 +30,13 @@ module Twilio
30
30
 
31
31
  ##
32
32
  # Fetch the UsAppToPersonUsecaseInstance
33
+ # @param [String] brand_registration_sid The unique string to identify the A2P
34
+ # brand.
33
35
  # @return [UsAppToPersonUsecaseInstance] Fetched UsAppToPersonUsecaseInstance
34
- def fetch
35
- payload = @version.fetch('GET', @uri)
36
+ def fetch(brand_registration_sid: :unset)
37
+ params = Twilio::Values.of({'BrandRegistrationSid' => brand_registration_sid, })
38
+
39
+ payload = @version.fetch('GET', @uri, params: params)
36
40
 
37
41
  UsAppToPersonUsecaseInstance.new(
38
42
  @version,
@@ -0,0 +1,280 @@
1
+ ##
2
+ # This code was generated by
3
+ # \ / _ _ _| _ _
4
+ # | (_)\/(_)(_|\/| |(/_ v1.0.0
5
+ # / /
6
+ #
7
+ # frozen_string_literal: true
8
+
9
+ module Twilio
10
+ module REST
11
+ class Pricing < Domain
12
+ class V2 < Version
13
+ class CountryList < ListResource
14
+ ##
15
+ # Initialize the CountryList
16
+ # @param [Version] version Version that contains the resource
17
+ # @return [CountryList] CountryList
18
+ def initialize(version)
19
+ super(version)
20
+
21
+ # Path Solution
22
+ @solution = {}
23
+ @uri = "/Trunking/Countries"
24
+ end
25
+
26
+ ##
27
+ # Lists CountryInstance records from the API as a list.
28
+ # Unlike stream(), this operation is eager and will load `limit` records into
29
+ # memory before returning.
30
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
31
+ # guarantees to never return more than limit. Default is no limit
32
+ # @param [Integer] page_size Number of records to fetch per request, when
33
+ # not set will use the default value of 50 records. If no page_size is defined
34
+ # but a limit is defined, stream() will attempt to read the limit with the most
35
+ # efficient page size, i.e. min(limit, 1000)
36
+ # @return [Array] Array of up to limit results
37
+ def list(limit: nil, page_size: nil)
38
+ self.stream(limit: limit, page_size: page_size).entries
39
+ end
40
+
41
+ ##
42
+ # Streams CountryInstance records from the API as an Enumerable.
43
+ # This operation lazily loads records as efficiently as possible until the limit
44
+ # is reached.
45
+ # @param [Integer] limit Upper limit for the number of records to return. stream()
46
+ # guarantees to never return more than limit. Default is no limit.
47
+ # @param [Integer] page_size Number of records to fetch per request, when
48
+ # not set will use the default value of 50 records. If no page_size is defined
49
+ # but a limit is defined, stream() will attempt to read the limit with the most
50
+ # efficient page size, i.e. min(limit, 1000)
51
+ # @return [Enumerable] Enumerable that will yield up to limit results
52
+ def stream(limit: nil, page_size: nil)
53
+ limits = @version.read_limits(limit, page_size)
54
+
55
+ page = self.page(page_size: limits[:page_size], )
56
+
57
+ @version.stream(page, limit: limits[:limit], page_limit: limits[:page_limit])
58
+ end
59
+
60
+ ##
61
+ # When passed a block, yields CountryInstance records from the API.
62
+ # This operation lazily loads records as efficiently as possible until the limit
63
+ # is reached.
64
+ def each
65
+ limits = @version.read_limits
66
+
67
+ page = self.page(page_size: limits[:page_size], )
68
+
69
+ @version.stream(page,
70
+ limit: limits[:limit],
71
+ page_limit: limits[:page_limit]).each {|x| yield x}
72
+ end
73
+
74
+ ##
75
+ # Retrieve a single page of CountryInstance records from the API.
76
+ # Request is executed immediately.
77
+ # @param [String] page_token PageToken provided by the API
78
+ # @param [Integer] page_number Page Number, this value is simply for client state
79
+ # @param [Integer] page_size Number of records to return, defaults to 50
80
+ # @return [Page] Page of CountryInstance
81
+ def page(page_token: :unset, page_number: :unset, page_size: :unset)
82
+ params = Twilio::Values.of({
83
+ 'PageToken' => page_token,
84
+ 'Page' => page_number,
85
+ 'PageSize' => page_size,
86
+ })
87
+
88
+ response = @version.page('GET', @uri, params: params)
89
+
90
+ CountryPage.new(@version, response, @solution)
91
+ end
92
+
93
+ ##
94
+ # Retrieve a single page of CountryInstance records from the API.
95
+ # Request is executed immediately.
96
+ # @param [String] target_url API-generated URL for the requested results page
97
+ # @return [Page] Page of CountryInstance
98
+ def get_page(target_url)
99
+ response = @version.domain.request(
100
+ 'GET',
101
+ target_url
102
+ )
103
+ CountryPage.new(@version, response, @solution)
104
+ end
105
+
106
+ ##
107
+ # Provide a user friendly representation
108
+ def to_s
109
+ '#<Twilio.Pricing.V2.CountryList>'
110
+ end
111
+ end
112
+
113
+ class CountryPage < Page
114
+ ##
115
+ # Initialize the CountryPage
116
+ # @param [Version] version Version that contains the resource
117
+ # @param [Response] response Response from the API
118
+ # @param [Hash] solution Path solution for the resource
119
+ # @return [CountryPage] CountryPage
120
+ def initialize(version, response, solution)
121
+ super(version, response)
122
+
123
+ # Path Solution
124
+ @solution = solution
125
+ end
126
+
127
+ ##
128
+ # Build an instance of CountryInstance
129
+ # @param [Hash] payload Payload response from the API
130
+ # @return [CountryInstance] CountryInstance
131
+ def get_instance(payload)
132
+ CountryInstance.new(@version, payload, )
133
+ end
134
+
135
+ ##
136
+ # Provide a user friendly representation
137
+ def to_s
138
+ '<Twilio.Pricing.V2.CountryPage>'
139
+ end
140
+ end
141
+
142
+ class CountryContext < InstanceContext
143
+ ##
144
+ # Initialize the CountryContext
145
+ # @param [Version] version Version that contains the resource
146
+ # @param [String] iso_country The {ISO country
147
+ # code}[https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2] of the origin-based
148
+ # voice pricing information to fetch.
149
+ # @return [CountryContext] CountryContext
150
+ def initialize(version, iso_country)
151
+ super(version)
152
+
153
+ # Path Solution
154
+ @solution = {iso_country: iso_country, }
155
+ @uri = "/Trunking/Countries/#{@solution[:iso_country]}"
156
+ end
157
+
158
+ ##
159
+ # Fetch the CountryInstance
160
+ # @return [CountryInstance] Fetched CountryInstance
161
+ def fetch
162
+ payload = @version.fetch('GET', @uri)
163
+
164
+ CountryInstance.new(@version, payload, iso_country: @solution[:iso_country], )
165
+ end
166
+
167
+ ##
168
+ # Provide a user friendly representation
169
+ def to_s
170
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
171
+ "#<Twilio.Pricing.V2.CountryContext #{context}>"
172
+ end
173
+
174
+ ##
175
+ # Provide a detailed, user friendly representation
176
+ def inspect
177
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
178
+ "#<Twilio.Pricing.V2.CountryContext #{context}>"
179
+ end
180
+ end
181
+
182
+ class CountryInstance < InstanceResource
183
+ ##
184
+ # Initialize the CountryInstance
185
+ # @param [Version] version Version that contains the resource
186
+ # @param [Hash] payload payload that contains response from Twilio
187
+ # @param [String] iso_country The {ISO country
188
+ # code}[https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2] of the origin-based
189
+ # voice pricing information to fetch.
190
+ # @return [CountryInstance] CountryInstance
191
+ def initialize(version, payload, iso_country: nil)
192
+ super(version)
193
+
194
+ # Marshaled Properties
195
+ @properties = {
196
+ 'country' => payload['country'],
197
+ 'iso_country' => payload['iso_country'],
198
+ 'terminating_prefix_prices' => payload['terminating_prefix_prices'],
199
+ 'originating_call_prices' => payload['originating_call_prices'],
200
+ 'price_unit' => payload['price_unit'],
201
+ 'url' => payload['url'],
202
+ }
203
+
204
+ # Context
205
+ @instance_context = nil
206
+ @params = {'iso_country' => iso_country || @properties['iso_country'], }
207
+ end
208
+
209
+ ##
210
+ # Generate an instance context for the instance, the context is capable of
211
+ # performing various actions. All instance actions are proxied to the context
212
+ # @return [CountryContext] CountryContext for this CountryInstance
213
+ def context
214
+ unless @instance_context
215
+ @instance_context = CountryContext.new(@version, @params['iso_country'], )
216
+ end
217
+ @instance_context
218
+ end
219
+
220
+ ##
221
+ # @return [String] The name of the country
222
+ def country
223
+ @properties['country']
224
+ end
225
+
226
+ ##
227
+ # @return [String] The ISO country code
228
+ def iso_country
229
+ @properties['iso_country']
230
+ end
231
+
232
+ ##
233
+ # @return [Array[String]] The list of TerminatingPrefixPrice records
234
+ def terminating_prefix_prices
235
+ @properties['terminating_prefix_prices']
236
+ end
237
+
238
+ ##
239
+ # @return [Array[String]] The list of OriginatingCallPrice records
240
+ def originating_call_prices
241
+ @properties['originating_call_prices']
242
+ end
243
+
244
+ ##
245
+ # @return [String] The currency in which prices are measured, in ISO 4127 format (e.g. usd, eur, jpy)
246
+ def price_unit
247
+ @properties['price_unit']
248
+ end
249
+
250
+ ##
251
+ # @return [String] The absolute URL of the resource
252
+ def url
253
+ @properties['url']
254
+ end
255
+
256
+ ##
257
+ # Fetch the CountryInstance
258
+ # @return [CountryInstance] Fetched CountryInstance
259
+ def fetch
260
+ context.fetch
261
+ end
262
+
263
+ ##
264
+ # Provide a user friendly representation
265
+ def to_s
266
+ values = @params.map{|k, v| "#{k}: #{v}"}.join(" ")
267
+ "<Twilio.Pricing.V2.CountryInstance #{values}>"
268
+ end
269
+
270
+ ##
271
+ # Provide a detailed, user friendly representation
272
+ def inspect
273
+ values = @properties.map{|k, v| "#{k}: #{v}"}.join(" ")
274
+ "<Twilio.Pricing.V2.CountryInstance #{values}>"
275
+ end
276
+ end
277
+ end
278
+ end
279
+ end
280
+ end
@@ -0,0 +1,225 @@
1
+ ##
2
+ # This code was generated by
3
+ # \ / _ _ _| _ _
4
+ # | (_)\/(_)(_|\/| |(/_ v1.0.0
5
+ # / /
6
+ #
7
+ # frozen_string_literal: true
8
+
9
+ module Twilio
10
+ module REST
11
+ class Pricing < Domain
12
+ class V2 < Version
13
+ class NumberList < ListResource
14
+ ##
15
+ # Initialize the NumberList
16
+ # @param [Version] version Version that contains the resource
17
+ # @return [NumberList] NumberList
18
+ def initialize(version)
19
+ super(version)
20
+
21
+ # Path Solution
22
+ @solution = {}
23
+ end
24
+
25
+ ##
26
+ # Provide a user friendly representation
27
+ def to_s
28
+ '#<Twilio.Pricing.V2.NumberList>'
29
+ end
30
+ end
31
+
32
+ class NumberPage < Page
33
+ ##
34
+ # Initialize the NumberPage
35
+ # @param [Version] version Version that contains the resource
36
+ # @param [Response] response Response from the API
37
+ # @param [Hash] solution Path solution for the resource
38
+ # @return [NumberPage] NumberPage
39
+ def initialize(version, response, solution)
40
+ super(version, response)
41
+
42
+ # Path Solution
43
+ @solution = solution
44
+ end
45
+
46
+ ##
47
+ # Build an instance of NumberInstance
48
+ # @param [Hash] payload Payload response from the API
49
+ # @return [NumberInstance] NumberInstance
50
+ def get_instance(payload)
51
+ NumberInstance.new(@version, payload, )
52
+ end
53
+
54
+ ##
55
+ # Provide a user friendly representation
56
+ def to_s
57
+ '<Twilio.Pricing.V2.NumberPage>'
58
+ end
59
+ end
60
+
61
+ class NumberContext < InstanceContext
62
+ ##
63
+ # Initialize the NumberContext
64
+ # @param [Version] version Version that contains the resource
65
+ # @param [String] destination_number The destination phone number, in
66
+ # {E.164}[https://www.twilio.com/docs/glossary/what-e164] format, for which to
67
+ # fetch the origin-based voice pricing information. E.164 format consists of a +
68
+ # followed by the country code and subscriber number.
69
+ # @return [NumberContext] NumberContext
70
+ def initialize(version, destination_number)
71
+ super(version)
72
+
73
+ # Path Solution
74
+ @solution = {destination_number: destination_number, }
75
+ @uri = "/Trunking/Numbers/#{CGI.escape(@solution[:destination_number]).gsub("+", "%20")}"
76
+ end
77
+
78
+ ##
79
+ # Fetch the NumberInstance
80
+ # @param [String] origination_number The origination phone number, in
81
+ # {E.164}[https://www.twilio.com/docs/glossary/what-e164] format, for which to
82
+ # fetch the origin-based voice pricing information. E.164 format consists of a +
83
+ # followed by the country code and subscriber number.
84
+ # @return [NumberInstance] Fetched NumberInstance
85
+ def fetch(origination_number: :unset)
86
+ params = Twilio::Values.of({'OriginationNumber' => origination_number, })
87
+
88
+ payload = @version.fetch('GET', @uri, params: params)
89
+
90
+ NumberInstance.new(@version, payload, destination_number: @solution[:destination_number], )
91
+ end
92
+
93
+ ##
94
+ # Provide a user friendly representation
95
+ def to_s
96
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
97
+ "#<Twilio.Pricing.V2.NumberContext #{context}>"
98
+ end
99
+
100
+ ##
101
+ # Provide a detailed, user friendly representation
102
+ def inspect
103
+ context = @solution.map {|k, v| "#{k}: #{v}"}.join(',')
104
+ "#<Twilio.Pricing.V2.NumberContext #{context}>"
105
+ end
106
+ end
107
+
108
+ class NumberInstance < InstanceResource
109
+ ##
110
+ # Initialize the NumberInstance
111
+ # @param [Version] version Version that contains the resource
112
+ # @param [Hash] payload payload that contains response from Twilio
113
+ # @param [String] destination_number The destination phone number, in
114
+ # {E.164}[https://www.twilio.com/docs/glossary/what-e164] format, for which to
115
+ # fetch the origin-based voice pricing information. E.164 format consists of a +
116
+ # followed by the country code and subscriber number.
117
+ # @return [NumberInstance] NumberInstance
118
+ def initialize(version, payload, destination_number: nil)
119
+ super(version)
120
+
121
+ # Marshaled Properties
122
+ @properties = {
123
+ 'destination_number' => payload['destination_number'],
124
+ 'origination_number' => payload['origination_number'],
125
+ 'country' => payload['country'],
126
+ 'iso_country' => payload['iso_country'],
127
+ 'terminating_prefix_prices' => payload['terminating_prefix_prices'],
128
+ 'originating_call_price' => payload['originating_call_price'],
129
+ 'price_unit' => payload['price_unit'],
130
+ 'url' => payload['url'],
131
+ }
132
+
133
+ # Context
134
+ @instance_context = nil
135
+ @params = {'destination_number' => destination_number || @properties['destination_number'], }
136
+ end
137
+
138
+ ##
139
+ # Generate an instance context for the instance, the context is capable of
140
+ # performing various actions. All instance actions are proxied to the context
141
+ # @return [NumberContext] NumberContext for this NumberInstance
142
+ def context
143
+ unless @instance_context
144
+ @instance_context = NumberContext.new(@version, @params['destination_number'], )
145
+ end
146
+ @instance_context
147
+ end
148
+
149
+ ##
150
+ # @return [String] The destination phone number, in E.164 format
151
+ def destination_number
152
+ @properties['destination_number']
153
+ end
154
+
155
+ ##
156
+ # @return [String] The origination phone number, in E.164 format
157
+ def origination_number
158
+ @properties['origination_number']
159
+ end
160
+
161
+ ##
162
+ # @return [String] The name of the country
163
+ def country
164
+ @properties['country']
165
+ end
166
+
167
+ ##
168
+ # @return [String] The ISO country code
169
+ def iso_country
170
+ @properties['iso_country']
171
+ end
172
+
173
+ ##
174
+ # @return [Array[String]] The terminating_prefix_prices
175
+ def terminating_prefix_prices
176
+ @properties['terminating_prefix_prices']
177
+ end
178
+
179
+ ##
180
+ # @return [String] The OriginatingCallPrice record
181
+ def originating_call_price
182
+ @properties['originating_call_price']
183
+ end
184
+
185
+ ##
186
+ # @return [String] The currency in which prices are measured, in ISO 4127 format (e.g. usd, eur, jpy)
187
+ def price_unit
188
+ @properties['price_unit']
189
+ end
190
+
191
+ ##
192
+ # @return [String] The absolute URL of the resource
193
+ def url
194
+ @properties['url']
195
+ end
196
+
197
+ ##
198
+ # Fetch the NumberInstance
199
+ # @param [String] origination_number The origination phone number, in
200
+ # {E.164}[https://www.twilio.com/docs/glossary/what-e164] format, for which to
201
+ # fetch the origin-based voice pricing information. E.164 format consists of a +
202
+ # followed by the country code and subscriber number.
203
+ # @return [NumberInstance] Fetched NumberInstance
204
+ def fetch(origination_number: :unset)
205
+ context.fetch(origination_number: origination_number, )
206
+ end
207
+
208
+ ##
209
+ # Provide a user friendly representation
210
+ def to_s
211
+ values = @params.map{|k, v| "#{k}: #{v}"}.join(" ")
212
+ "<Twilio.Pricing.V2.NumberInstance #{values}>"
213
+ end
214
+
215
+ ##
216
+ # Provide a detailed, user friendly representation
217
+ def inspect
218
+ values = @properties.map{|k, v| "#{k}: #{v}"}.join(" ")
219
+ "<Twilio.Pricing.V2.NumberInstance #{values}>"
220
+ end
221
+ end
222
+ end
223
+ end
224
+ end
225
+ end