twilio-ruby 7.8.8 → 7.9.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2b11058a2f22cd95283f218eb0ead8ea6b142992
4
- data.tar.gz: d51db32ebc6312550f6ed59fbe6d58b9fe1cc8a2
3
+ metadata.gz: ee948f47784c5d49ae7243b9b002376870a6ddc3
4
+ data.tar.gz: 69e8b52f1c5cdde77e96325e87c988f28ca0cd12
5
5
  SHA512:
6
- metadata.gz: a2c86f3c669803955244b87d44a7ef30baad9226eb6d065c7c98762a99b3ec43b403bb5e034e8cb1774fd76970a5192ac7051ee233162b77341100ea8c85bcaa
7
- data.tar.gz: 1852bb1350df711ca233eb055277b20613b71b99bd9bcb4420d2ca89c43656deb8982b4cb9838b778b9344e564911f3ef2ad52d0f467db17f17de5646de8dc1c
6
+ metadata.gz: ccf16209bbd92b3cbe393fca56a34c4ac835f83f6a2076990cd4049ba997163c253204a18bf36164bcc12cbb927d70f29a82c156f3adf081007a0f62b4eb9e83
7
+ data.tar.gz: 741e65880219e81c967263cd5293e693a06af02b45a53de8e9cf52d3638d05df499a1f22273f751893e4b6324d7feaa547f236890b8266266fc951d1c2c8e044
@@ -17,7 +17,7 @@ jobs:
17
17
  timeout-minutes: 20
18
18
  strategy:
19
19
  matrix:
20
- ruby: [ '2.4', '2.5', '2.6', '2.7', '3.0', '3.1', '3.2', 'jruby-9.3', 'jruby-9.4' ]
20
+ ruby: [ '2.5', '2.6', '2.7', '3.0', '3.1', '3.2', 'jruby-9.3', 'jruby-9.4' ]
21
21
  steps:
22
22
  - name: Checkout twilio-ruby
23
23
  uses: actions/checkout@v3
data/.gitignore CHANGED
@@ -19,3 +19,4 @@ docs/_build
19
19
 
20
20
 
21
21
  coverage
22
+ vendor/bundle
data/CHANGES.md CHANGED
@@ -1,6 +1,37 @@
1
1
  twilio-ruby changelog
2
2
  =====================
3
3
 
4
+ [2026-01-07] Version 7.9.1
5
+ --------------------------
6
+ **Library - Chore**
7
+ - [PR #772](https://github.com/twilio/twilio-ruby/pull/772): Token Pagination support. Thanks to [@manisha1997](https://github.com/manisha1997)!
8
+ - [PR #773](https://github.com/twilio/twilio-ruby/pull/773): custom error response redesign. Thanks to [@manisha1997](https://github.com/manisha1997)!
9
+
10
+ **Api**
11
+ - Added optional parameter `clientNotificationUrl` for create call api
12
+ - Added optional parameter `clientNotificationUrl` for create participant api
13
+
14
+
15
+ [2025-12-17] Version 7.9.0
16
+ --------------------------
17
+ **Library - Chore**
18
+ - [PR #771](https://github.com/twilio/twilio-ruby/pull/771): Patch support method. Thanks to [@manisha1997](https://github.com/manisha1997)!
19
+ - [PR #766](https://github.com/twilio/twilio-ruby/pull/766): Support all status codes for delete. Thanks to [@manisha1997](https://github.com/manisha1997)!
20
+ - [PR #769](https://github.com/twilio/twilio-ruby/pull/769): URL query percent encoded. Thanks to [@manisha1997](https://github.com/manisha1997)!
21
+
22
+ **Library - Fix**
23
+ - [PR #770](https://github.com/twilio/twilio-ruby/pull/770): bug fix. Thanks to [@manisha1997](https://github.com/manisha1997)!
24
+
25
+ **Trunking**
26
+ - Corrected the type used for phone number capabilities when accessed through a Trunk. **(breaking change)**
27
+ - Corrected the type used for phone number capabilities when accessed through a Trunk. **(breaking change)**
28
+
29
+ **Trusthub**
30
+ - Added new parameters in in toll-free initialize api payload.
31
+ - Remove the invalid status transition to Draft from the examples
32
+ - Change the value of email to a valid one in the examples.
33
+
34
+
4
35
  [2025-12-03] Version 7.8.8
5
36
  --------------------------
6
37
  **Library - Fix**
data/README.md CHANGED
@@ -39,13 +39,13 @@ This library supports the following Ruby implementations:
39
39
  To install using [Bundler][bundler] grab the latest stable version:
40
40
 
41
41
  ```ruby
42
- gem 'twilio-ruby', '~> 7.8.8'
42
+ gem 'twilio-ruby', '~> 7.9.1'
43
43
  ```
44
44
 
45
45
  To manually install `twilio-ruby` via [Rubygems][rubygems] simply gem install:
46
46
 
47
47
  ```bash
48
- gem install twilio-ruby -v 7.8.8
48
+ gem install twilio-ruby -v 7.9.1
49
49
  ```
50
50
 
51
51
  To build and install the development branch yourself from the latest source:
@@ -27,15 +27,10 @@ module Twilio
27
27
  @username = username || Twilio.account_sid
28
28
  @password = password || Twilio.auth_token
29
29
  @region = region || Twilio.region
30
- if (region.nil? && !Twilio.edge.nil?) || (!region.nil? && Twilio.edge.nil?)
31
- # rubocop:disable Layout/LineLength
32
- warn '[DEPRECATION] For regional processing, DNS is of format product.<edge>.<region>.twilio.com;otherwise use product.twilio.com.'
33
- end
34
30
  if Twilio.edge
35
31
  @edge = Twilio.edge
36
32
  elsif @region && @@region_mappings[region]
37
33
  warn '[DEPRECATION] Setting default `Edge` for the provided `region`.'
38
- # rubocop:enable Layout/LineLength
39
34
  @edge = @@region_mappings[region]
40
35
  end
41
36
  @account_sid = account_sid || @username
@@ -101,6 +96,11 @@ module Twilio
101
96
  ##
102
97
  # Build the final request uri
103
98
  def build_uri(uri)
99
+ if (@region.nil? && !@edge.nil?) || (!@region.nil? && @edge.nil?)
100
+ # rubocop:disable Layout/LineLength
101
+ warn '[DEPRECATION] For regional processing, DNS is of format product.<edge>.<region>.twilio.com;otherwise use product.twilio.com.'
102
+ # rubocop:enable Layout/LineLength
103
+ end
104
104
  if @edge.nil? && @region && @@region_mappings[@region]
105
105
  warn '[DEPRECATION] Setting default `Edge` for the provided `region`.'
106
106
  @edge = @@region_mappings[@region]
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'version'
4
+ require_relative 'error'
5
+
6
+ module Twilio
7
+ module REST
8
+ class ApiV1Version < Version
9
+ attr_accessor :api_version
10
+
11
+ def initialize(domain, version)
12
+ super(domain)
13
+ @version = version.version
14
+ @api_version = 'v1'
15
+ end
16
+
17
+ def exception(response, _)
18
+ RestErrorV10.new(response.body)
19
+ end
20
+ end
21
+ end
22
+ end
@@ -35,5 +35,32 @@ module Twilio
35
35
 
36
36
  class ObsoleteError < StandardError
37
37
  end
38
+
39
+ class RestErrorV10 < TwilioError
40
+ attr_accessor :code, :message, :http_status_code, :params, :user_error
41
+
42
+ def initialize(response)
43
+ @code = response['code']
44
+ @message = response['message']
45
+ @http_status_code = response['httpsStatusCode']
46
+ @params = response['params']
47
+ @user_error = response['userError']
48
+ end
49
+
50
+ def to_s
51
+ message
52
+ end
53
+
54
+ private
55
+
56
+ def format_message(initial_message)
57
+ message_response = "[HTTP #{status_code}] #{code} : #{initial_message}"
58
+ message_response += "\n#{message}" if message
59
+ message_response += "\n#{http_status_code}" if http_status_code
60
+ message_response += "\n#{params}" if params
61
+ message_response += "\n#{user_error}" if user_error
62
+ message_response + "\n\n"
63
+ end
64
+ end
38
65
  end
39
66
  end
@@ -0,0 +1,73 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Twilio
4
+ module REST
5
+ class TokenPage < Page
6
+ attr_accessor :key, :page_size, :url
7
+
8
+ def initialize(version, response)
9
+ super(version, response)
10
+
11
+ @client = @version.domain.client.http_client
12
+ @url = ''
13
+ if @client.last_request
14
+ full_url = @client.last_request.url
15
+ uri = URI.parse(full_url)
16
+ @url = uri.path
17
+ @params = @client.last_request.params
18
+ end
19
+ @page_size = @payload['meta'] && @payload['meta']['pageSize']
20
+ @next_token = @payload['meta'] && @payload['meta']['nextToken']
21
+ @previous_token = @payload['meta'] && @payload['meta']['previousToken']
22
+ end
23
+
24
+ def previous_token
25
+ @payload['meta'] && @payload['meta']['previousToken']
26
+ end
27
+
28
+ def previous_page
29
+ cached_url = previous_page_url
30
+ return nil unless cached_url
31
+
32
+ response = @version.domain.request('GET', cached_url, @params)
33
+
34
+ self.class.new(@version, response, @solution)
35
+ end
36
+
37
+ def next_token
38
+ @payload['meta'] && @payload['meta']['nextToken']
39
+ end
40
+
41
+ def previous_page_url
42
+ return nil if previous_token.nil?
43
+
44
+ @params['pageToken'] = previous_token
45
+ @version.domain.absolute_url(@url)
46
+ end
47
+
48
+ def next_page_url
49
+ token = next_token
50
+ return nil if token.nil? || token.to_s.empty?
51
+
52
+ @params['pageToken'] = token
53
+ @version.domain.absolute_url(@url)
54
+ end
55
+
56
+ def next_page
57
+ cached_url = next_page_url
58
+ return nil unless cached_url
59
+
60
+ response = @version.domain.request('GET', cached_url, @params)
61
+
62
+ self.class.new(@version, response, @solution)
63
+ end
64
+
65
+ def load_page(payload)
66
+ @key ||= payload['meta'] && payload['meta']['key']
67
+ return @payload[@key] if @key && @payload[@key]
68
+
69
+ raise Twilio::REST::TwilioError, 'Page Records can not be deserialized'
70
+ end
71
+ end
72
+ end
73
+ end
@@ -3,7 +3,7 @@
3
3
  module Twilio
4
4
  module REST
5
5
  class Version
6
- attr_accessor :domain
6
+ attr_accessor :domain, :version
7
7
 
8
8
  class RecordStream
9
9
  include Enumerable
@@ -94,7 +94,7 @@ module Twilio
94
94
  response.body
95
95
  end
96
96
 
97
- def delete(method, uri, params: {}, data: {}, headers: {}, auth: nil, timeout: nil)
97
+ def patch(method, uri, params: {}, data: {}, headers: {}, auth: nil, timeout: nil)
98
98
  response = request(
99
99
  method,
100
100
  uri,
@@ -106,10 +106,28 @@ module Twilio
106
106
  )
107
107
 
108
108
  if response.status_code < 200 || response.status_code >= 300
109
+ raise exception(response, 'Unable to patch record')
110
+ end
111
+
112
+ response.body
113
+ end
114
+
115
+ def delete(method, uri, params: {}, data: {}, headers: {}, auth: nil, timeout: nil)
116
+ response = request(
117
+ method,
118
+ uri,
119
+ params,
120
+ data,
121
+ headers,
122
+ auth,
123
+ timeout
124
+ )
125
+
126
+ if response.status_code < 200 || response.status_code >= 400
109
127
  raise exception(response, 'Unable to delete record')
110
128
  end
111
129
 
112
- response.status_code == 204
130
+ response.status_code >= 200 && response.status_code < 400
113
131
  end
114
132
 
115
133
  def read_limits(limit = nil, page_size = nil)
@@ -40,7 +40,7 @@ module Twilio
40
40
  # @param [String] region The state or region of the new address.
41
41
  # @param [String] postal_code The postal code of the new address.
42
42
  # @param [String] iso_country The ISO country code of the new address.
43
- # @param [String] friendly_name A descriptive string that you create to describe the new address. It can be up to 64 characters long.
43
+ # @param [String] friendly_name A descriptive string that you create to describe the new address. It can be up to 64 characters long for Regulatory Compliance addresses and 32 characters long for Emergency addresses.
44
44
  # @param [Boolean] emergency_enabled Whether to enable emergency calling on the new address. Can be: `true` or `false`.
45
45
  # @param [Boolean] auto_correct_address Whether we should automatically correct the address. Can be: `true` or `false` and the default is `true`. If empty or `true`, we will correct the address you provide if necessary. If `false`, we won't alter the address you provide.
46
46
  # @param [String] street_secondary The additional number and street address of the address.
@@ -66,6 +66,7 @@ module Twilio
66
66
  # @param [String] call_token A token string needed to invoke a forwarded call. A call_token is generated when an incoming call is received on a Twilio number. Pass an incoming call's call_token value to a forwarded call via the call_token parameter when creating a new call. A forwarded call should bear the same CallerID of the original incoming call.
67
67
  # @param [String] recording_track The audio track to record for the call. Can be: `inbound`, `outbound` or `both`. The default is `both`. `inbound` records the audio that is received by Twilio. `outbound` records the audio that is generated from Twilio. `both` records the audio that is received and generated by Twilio.
68
68
  # @param [String] time_limit The maximum duration of the call in seconds. Constraints depend on account and configuration.
69
+ # @param [String] client_notification_url The URL that we should use to deliver `push call notification`.
69
70
  # @param [String] url The absolute URL that returns the TwiML instructions for the call. We will call this URL using the `method` when the call connects. For more information, see the [Url Parameter](https://www.twilio.com/docs/voice/make-calls#specify-a-url-parameter) section in [Making Calls](https://www.twilio.com/docs/voice/make-calls).
70
71
  # @param [String] twiml TwiML instructions for the call Twilio will use without fetching Twiml from url parameter. If both `twiml` and `url` are provided then `twiml` parameter will be ignored. Max 4000 characters.
71
72
  # @param [String] application_sid The SID of the Application resource that will handle the call, if the call will be handled by an application.
@@ -103,6 +104,7 @@ module Twilio
103
104
  call_token: :unset,
104
105
  recording_track: :unset,
105
106
  time_limit: :unset,
107
+ client_notification_url: :unset,
106
108
  url: :unset,
107
109
  twiml: :unset,
108
110
  application_sid: :unset
@@ -141,6 +143,7 @@ module Twilio
141
143
  'CallToken' => call_token,
142
144
  'RecordingTrack' => recording_track,
143
145
  'TimeLimit' => time_limit,
146
+ 'ClientNotificationUrl' => client_notification_url,
144
147
  'Url' => url,
145
148
  'Twiml' => twiml,
146
149
  'ApplicationSid' => application_sid,
@@ -83,6 +83,7 @@ module Twilio
83
83
  # @param [String] amd_status_callback_method The HTTP method we should use when calling the `amd_status_callback` URL. Can be: `GET` or `POST` and the default is `POST`.
84
84
  # @param [String] trim Whether to trim any leading and trailing silence from the participant recording. Can be: `trim-silence` or `do-not-trim` and the default is `trim-silence`.
85
85
  # @param [String] call_token A token string needed to invoke a forwarded call. A call_token is generated when an incoming call is received on a Twilio number. Pass an incoming call's call_token value to a forwarded call via the call_token parameter when creating a new call. A forwarded call should bear the same CallerID of the original incoming call.
86
+ # @param [String] client_notification_url The URL that we should use to deliver `push call notification`.
86
87
  # @param [String] caller_display_name The name that populates the display name in the From header. Must be between 2 and 255 characters. Only applicable for calls to sip address.
87
88
  # @return [ParticipantInstance] Created ParticipantInstance
88
89
  def create(
@@ -134,6 +135,7 @@ module Twilio
134
135
  amd_status_callback_method: :unset,
135
136
  trim: :unset,
136
137
  call_token: :unset,
138
+ client_notification_url: :unset,
137
139
  caller_display_name: :unset
138
140
  )
139
141
 
@@ -186,6 +188,7 @@ module Twilio
186
188
  'AmdStatusCallbackMethod' => amd_status_callback_method,
187
189
  'Trim' => trim,
188
190
  'CallToken' => call_token,
191
+ 'ClientNotificationUrl' => client_notification_url,
189
192
  'CallerDisplayName' => caller_display_name,
190
193
  })
191
194
 
@@ -67,6 +67,8 @@ module Twilio
67
67
  # @param [String] terms_and_conditions_url The URL to the terms and conditions for the business or organization.
68
68
  # @param [Boolean] age_gated_content Indicates if the content is age gated.
69
69
  # @param [Array[String]] opt_in_keywords List of keywords that users can text in to opt in to receive messages.
70
+ # @param [VettingProvider] vetting_provider
71
+ # @param [String] vetting_id The unique ID of the vetting
70
72
  # @return [TollfreeVerificationInstance] Created TollfreeVerificationInstance
71
73
  def create(
72
74
  business_name: nil,
@@ -103,7 +105,9 @@ module Twilio
103
105
  privacy_policy_url: :unset,
104
106
  terms_and_conditions_url: :unset,
105
107
  age_gated_content: :unset,
106
- opt_in_keywords: :unset
108
+ opt_in_keywords: :unset,
109
+ vetting_provider: :unset,
110
+ vetting_id: :unset
107
111
  )
108
112
 
109
113
  data = Twilio::Values.of({
@@ -142,6 +146,8 @@ module Twilio
142
146
  'TermsAndConditionsUrl' => terms_and_conditions_url,
143
147
  'AgeGatedContent' => age_gated_content,
144
148
  'OptInKeywords' => Twilio.serialize_list(opt_in_keywords) { |e| e },
149
+ 'VettingProvider' => vetting_provider,
150
+ 'VettingId' => vetting_id,
145
151
  })
146
152
 
147
153
  headers = Twilio::Values.of({'Content-Type' => 'application/x-www-form-urlencoded', })
@@ -366,6 +372,8 @@ module Twilio
366
372
  # @param [String] terms_and_conditions_url The URL to the terms and conditions for the business or organization.
367
373
  # @param [Boolean] age_gated_content Indicates if the content is age gated.
368
374
  # @param [Array[String]] opt_in_keywords List of keywords that users can text in to opt in to receive messages.
375
+ # @param [VettingProvider] vetting_provider
376
+ # @param [String] vetting_id The unique ID of the vetting
369
377
  # @return [TollfreeVerificationInstance] Updated TollfreeVerificationInstance
370
378
  def update(
371
379
  business_name: :unset,
@@ -400,7 +408,9 @@ module Twilio
400
408
  privacy_policy_url: :unset,
401
409
  terms_and_conditions_url: :unset,
402
410
  age_gated_content: :unset,
403
- opt_in_keywords: :unset
411
+ opt_in_keywords: :unset,
412
+ vetting_provider: :unset,
413
+ vetting_id: :unset
404
414
  )
405
415
 
406
416
  data = Twilio::Values.of({
@@ -437,6 +447,8 @@ module Twilio
437
447
  'TermsAndConditionsUrl' => terms_and_conditions_url,
438
448
  'AgeGatedContent' => age_gated_content,
439
449
  'OptInKeywords' => Twilio.serialize_list(opt_in_keywords) { |e| e },
450
+ 'VettingProvider' => vetting_provider,
451
+ 'VettingId' => vetting_id,
440
452
  })
441
453
 
442
454
  headers = Twilio::Values.of({'Content-Type' => 'application/x-www-form-urlencoded', })
@@ -562,6 +574,9 @@ module Twilio
562
574
  'rejection_reasons' => payload['rejection_reasons'],
563
575
  'resource_links' => payload['resource_links'],
564
576
  'external_reference_id' => payload['external_reference_id'],
577
+ 'vetting_id' => payload['vetting_id'],
578
+ 'vetting_provider' => payload['vetting_provider'],
579
+ 'vetting_id_expiration' => Twilio.deserialize_iso8601_datetime(payload['vetting_id_expiration']),
565
580
  }
566
581
 
567
582
  # Context
@@ -880,6 +895,24 @@ module Twilio
880
895
  @properties['external_reference_id']
881
896
  end
882
897
 
898
+ ##
899
+ # @return [String]
900
+ def vetting_id
901
+ @properties['vetting_id']
902
+ end
903
+
904
+ ##
905
+ # @return [VettingProvider]
906
+ def vetting_provider
907
+ @properties['vetting_provider']
908
+ end
909
+
910
+ ##
911
+ # @return [Time]
912
+ def vetting_id_expiration
913
+ @properties['vetting_id_expiration']
914
+ end
915
+
883
916
  ##
884
917
  # Delete the TollfreeVerificationInstance
885
918
  # @return [Boolean] True if delete succeeds, false otherwise
@@ -931,6 +964,8 @@ module Twilio
931
964
  # @param [String] terms_and_conditions_url The URL to the terms and conditions for the business or organization.
932
965
  # @param [Boolean] age_gated_content Indicates if the content is age gated.
933
966
  # @param [Array[String]] opt_in_keywords List of keywords that users can text in to opt in to receive messages.
967
+ # @param [VettingProvider] vetting_provider
968
+ # @param [String] vetting_id The unique ID of the vetting
934
969
  # @return [TollfreeVerificationInstance] Updated TollfreeVerificationInstance
935
970
  def update(
936
971
  business_name: :unset,
@@ -965,7 +1000,9 @@ module Twilio
965
1000
  privacy_policy_url: :unset,
966
1001
  terms_and_conditions_url: :unset,
967
1002
  age_gated_content: :unset,
968
- opt_in_keywords: :unset
1003
+ opt_in_keywords: :unset,
1004
+ vetting_provider: :unset,
1005
+ vetting_id: :unset
969
1006
  )
970
1007
 
971
1008
  context.update(
@@ -1002,6 +1039,8 @@ module Twilio
1002
1039
  terms_and_conditions_url: terms_and_conditions_url,
1003
1040
  age_gated_content: age_gated_content,
1004
1041
  opt_in_keywords: opt_in_keywords,
1042
+ vetting_provider: vetting_provider,
1043
+ vetting_id: vetting_id,
1005
1044
  )
1006
1045
  end
1007
1046
 
@@ -0,0 +1,250 @@
1
+ ##
2
+ # This code was generated by
3
+ # ___ _ _ _ _ _ _ ____ ____ ____ _ ____ ____ _ _ ____ ____ ____ ___ __ __
4
+ # | | | | | | | | | __ | | |__| | __ | __ |___ |\ | |___ |__/ |__| | | | |__/
5
+ # | |_|_| | |___ | |__| |__| | | | |__] |___ | \| |___ | \ | | | |__| | \
6
+ #
7
+ # Twilio - Messaging
8
+ # This is the public Twilio REST API.
9
+ #
10
+ # NOTE: This class is auto generated by OpenAPI Generator.
11
+ # https://openapi-generator.tech
12
+ # Do not edit the class manually.
13
+ #
14
+
15
+
16
+ module Twilio
17
+ module REST
18
+ class Messaging < MessagingBase
19
+ class V2 < Version
20
+ class DomainCertsList < ListResource
21
+
22
+ ##
23
+ # Initialize the DomainCertsList
24
+ # @param [Version] version Version that contains the resource
25
+ # @return [DomainCertsList] DomainCertsList
26
+ def initialize(version)
27
+ super(version)
28
+ # Path Solution
29
+ @solution = { }
30
+
31
+
32
+ end
33
+
34
+
35
+
36
+ # Provide a user friendly representation
37
+ def to_s
38
+ '#<Twilio.Messaging.V2.DomainCertsList>'
39
+ end
40
+ end
41
+
42
+
43
+ class DomainCertsContext < InstanceContext
44
+ ##
45
+ # Initialize the DomainCertsContext
46
+ # @param [Version] version Version that contains the resource
47
+ # @param [String] domain_sid Unique string used to identify the domain that this certificate should be associated with.
48
+ # @return [DomainCertsContext] DomainCertsContext
49
+ def initialize(version, domain_sid)
50
+ super(version)
51
+
52
+ # Path Solution
53
+ @solution = { domain_sid: domain_sid, }
54
+ @uri = "/LinkShortening/Domains/#{@solution[:domain_sid]}/Certificate"
55
+
56
+
57
+ end
58
+ ##
59
+ # Fetch the DomainCertsInstance
60
+ # @return [DomainCertsInstance] Fetched DomainCertsInstance
61
+ def fetch
62
+
63
+ headers = Twilio::Values.of({'Content-Type' => 'application/x-www-form-urlencoded', })
64
+
65
+
66
+
67
+
68
+
69
+ payload = @version.fetch('GET', @uri, headers: headers)
70
+ DomainCertsInstance.new(
71
+ @version,
72
+ payload,
73
+ domain_sid: @solution[:domain_sid],
74
+ )
75
+ end
76
+
77
+
78
+ ##
79
+ # Provide a user friendly representation
80
+ def to_s
81
+ context = @solution.map{|k, v| "#{k}: #{v}"}.join(',')
82
+ "#<Twilio.Messaging.V2.DomainCertsContext #{context}>"
83
+ end
84
+
85
+ ##
86
+ # Provide a detailed, user friendly representation
87
+ def inspect
88
+ context = @solution.map{|k, v| "#{k}: #{v}"}.join(',')
89
+ "#<Twilio.Messaging.V2.DomainCertsContext #{context}>"
90
+ end
91
+ end
92
+
93
+ class DomainCertsPage < Page
94
+ ##
95
+ # Initialize the DomainCertsPage
96
+ # @param [Version] version Version that contains the resource
97
+ # @param [Response] response Response from the API
98
+ # @param [Hash] solution Path solution for the resource
99
+ # @return [DomainCertsPage] DomainCertsPage
100
+ def initialize(version, response, solution)
101
+ super(version, response)
102
+
103
+ # Path Solution
104
+ @solution = solution
105
+ end
106
+
107
+ ##
108
+ # Build an instance of DomainCertsInstance
109
+ # @param [Hash] payload Payload response from the API
110
+ # @return [DomainCertsInstance] DomainCertsInstance
111
+ def get_instance(payload)
112
+ DomainCertsInstance.new(@version, payload)
113
+ end
114
+
115
+ ##
116
+ # Provide a user friendly representation
117
+ def to_s
118
+ '<Twilio.Messaging.V2.DomainCertsPage>'
119
+ end
120
+ end
121
+ class DomainCertsInstance < InstanceResource
122
+ ##
123
+ # Initialize the DomainCertsInstance
124
+ # @param [Version] version Version that contains the resource
125
+ # @param [Hash] payload payload that contains response from Twilio
126
+ # @param [String] account_sid The SID of the
127
+ # {Account}[https://www.twilio.com/docs/iam/api/account] that created this DomainCerts
128
+ # resource.
129
+ # @param [String] sid The SID of the Call resource to fetch.
130
+ # @return [DomainCertsInstance] DomainCertsInstance
131
+ def initialize(version, payload , domain_sid: nil)
132
+ super(version)
133
+
134
+ # Marshaled Properties
135
+ @properties = {
136
+ 'domain_sid' => payload['domain_sid'],
137
+ 'date_updated' => Twilio.deserialize_iso8601_datetime(payload['date_updated']),
138
+ 'date_expires' => Twilio.deserialize_iso8601_datetime(payload['date_expires']),
139
+ 'date_created' => Twilio.deserialize_iso8601_datetime(payload['date_created']),
140
+ 'domain_name' => payload['domain_name'],
141
+ 'certificate_sid' => payload['certificate_sid'],
142
+ 'managed' => payload['managed'],
143
+ 'requesting' => payload['requesting'],
144
+ 'url' => payload['url'],
145
+ 'cert_in_validation' => payload['cert_in_validation'],
146
+ }
147
+
148
+ # Context
149
+ @instance_context = nil
150
+ @params = { 'domain_sid' => domain_sid || @properties['domain_sid'] , }
151
+ end
152
+
153
+ ##
154
+ # Generate an instance context for the instance, the context is capable of
155
+ # performing various actions. All instance actions are proxied to the context
156
+ # @return [DomainCertsContext] CallContext for this CallInstance
157
+ def context
158
+ unless @instance_context
159
+ @instance_context = DomainCertsContext.new(@version , @params['domain_sid'])
160
+ end
161
+ @instance_context
162
+ end
163
+
164
+ ##
165
+ # @return [String] The unique string that we created to identify the Domain resource.
166
+ def domain_sid
167
+ @properties['domain_sid']
168
+ end
169
+
170
+ ##
171
+ # @return [Time] Date that this Domain was last updated.
172
+ def date_updated
173
+ @properties['date_updated']
174
+ end
175
+
176
+ ##
177
+ # @return [Time] Date that the private certificate associated with this domain expires. You will need to update the certificate before that date to ensure your shortened links will continue to work.
178
+ def date_expires
179
+ @properties['date_expires']
180
+ end
181
+
182
+ ##
183
+ # @return [Time] Date that this Domain was registered to the Twilio platform to create a new Domain object.
184
+ def date_created
185
+ @properties['date_created']
186
+ end
187
+
188
+ ##
189
+ # @return [String] Full url path for this domain.
190
+ def domain_name
191
+ @properties['domain_name']
192
+ end
193
+
194
+ ##
195
+ # @return [String] The unique string that we created to identify this Certificate resource.
196
+ def certificate_sid
197
+ @properties['certificate_sid']
198
+ end
199
+
200
+ ##
201
+ # @return [Boolean] Boolean field that indicates whether the certificate is managed by Twilio or uploaded by the customer.
202
+ def managed
203
+ @properties['managed']
204
+ end
205
+
206
+ ##
207
+ # @return [Boolean] Boolean field that indicates whether a Twilio managed cert request is in progress or completed. True indicates a request is in progress and false indicates the request has completed or not requested yet.
208
+ def requesting
209
+ @properties['requesting']
210
+ end
211
+
212
+ ##
213
+ # @return [String]
214
+ def url
215
+ @properties['url']
216
+ end
217
+
218
+ ##
219
+ # @return [Hash] Optional JSON field describing the status and upload date of a new certificate in the process of validation
220
+ def cert_in_validation
221
+ @properties['cert_in_validation']
222
+ end
223
+
224
+ ##
225
+ # Fetch the DomainCertsInstance
226
+ # @return [DomainCertsInstance] Fetched DomainCertsInstance
227
+ def fetch
228
+
229
+ context.fetch
230
+ end
231
+
232
+ ##
233
+ # Provide a user friendly representation
234
+ def to_s
235
+ values = @params.map{|k, v| "#{k}: #{v}"}.join(" ")
236
+ "<Twilio.Messaging.V2.DomainCertsInstance #{values}>"
237
+ end
238
+
239
+ ##
240
+ # Provide a detailed, user friendly representation
241
+ def inspect
242
+ values = @properties.map{|k, v| "#{k}: #{v}"}.join(" ")
243
+ "<Twilio.Messaging.V2.DomainCertsInstance #{values}>"
244
+ end
245
+ end
246
+
247
+ end
248
+ end
249
+ end
250
+ end
@@ -22,6 +22,7 @@ module Twilio
22
22
  super
23
23
  @version = 'v2'
24
24
  @channels_senders = nil
25
+ @domain_certs = nil
25
26
  @typing_indicator = nil
26
27
  end
27
28
 
@@ -40,6 +41,20 @@ module Twilio
40
41
  end
41
42
  end
42
43
  ##
44
+ # @param [String] domain_sid Unique string used to identify the domain that this certificate should be associated with.
45
+ # @return [Twilio::REST::Messaging::V2::DomainCertsContext] if domainSid was passed.
46
+ # @return [Twilio::REST::Messaging::V2::DomainCertsList]
47
+ def domain_certs(domain_sid=:unset)
48
+ if domain_sid.nil?
49
+ raise ArgumentError, 'domain_sid cannot be nil'
50
+ end
51
+ if domain_sid == :unset
52
+ @domain_certs ||= DomainCertsList.new self
53
+ else
54
+ DomainCertsContext.new(self, domain_sid)
55
+ end
56
+ end
57
+ ##
43
58
  # @return [Twilio::REST::Messaging::V2::TypingIndicatorList]
44
59
  def typing_indicator
45
60
  @typing_indicator ||= TypingIndicatorList.new self
@@ -39,8 +39,8 @@ module Twilio
39
39
  # @param [String] size Number of items per page
40
40
  # @param [String] port_in_request_sid Filter by Port in request SID, supports multiple values separated by comma
41
41
  # @param [String] port_in_request_status Filter by Port In request status
42
- # @param [Time] created_before Find all created before a certain date
43
- # @param [Time] created_after Find all created after a certain date
42
+ # @param [String] created_before Find all created before a certain date
43
+ # @param [String] created_after Find all created after a certain date
44
44
  # @param [Integer] limit Upper limit for the number of records to return. stream()
45
45
  # guarantees to never return more than limit. Default is no limit
46
46
  # @param [Integer] page_size Number of records to fetch per request, when
@@ -69,8 +69,8 @@ module Twilio
69
69
  # @param [String] size Number of items per page
70
70
  # @param [String] port_in_request_sid Filter by Port in request SID, supports multiple values separated by comma
71
71
  # @param [String] port_in_request_status Filter by Port In request status
72
- # @param [Time] created_before Find all created before a certain date
73
- # @param [Time] created_after Find all created after a certain date
72
+ # @param [String] created_before Find all created before a certain date
73
+ # @param [String] created_after Find all created after a certain date
74
74
  # @param [Integer] limit Upper limit for the number of records to return. stream()
75
75
  # guarantees to never return more than limit. Default is no limit
76
76
  # @param [Integer] page_size Number of records to fetch per request, when
@@ -114,8 +114,8 @@ module Twilio
114
114
  # @param [String] size Number of items per page
115
115
  # @param [String] port_in_request_sid Filter by Port in request SID, supports multiple values separated by comma
116
116
  # @param [String] port_in_request_status Filter by Port In request status
117
- # @param [Time] created_before Find all created before a certain date
118
- # @param [Time] created_after Find all created after a certain date
117
+ # @param [String] created_before Find all created before a certain date
118
+ # @param [String] created_after Find all created after a certain date
119
119
  # @param [String] page_token PageToken provided by the API
120
120
  # @param [Integer] page_number Page Number, this value is simply for client state
121
121
  # @param [Integer] page_size Number of records to return, defaults to 50
@@ -126,8 +126,8 @@ module Twilio
126
126
  'Size' => size,
127
127
  'PortInRequestSid' => port_in_request_sid,
128
128
  'PortInRequestStatus' => port_in_request_status,
129
- 'CreatedBefore' => Twilio.serialize_iso8601_datetime(created_before),
130
- 'CreatedAfter' => Twilio.serialize_iso8601_datetime(created_after),
129
+ 'CreatedBefore' => created_before,
130
+ 'CreatedAfter' => created_after,
131
131
  'PageToken' => page_token,
132
132
  'Page' => page_number,
133
133
  'PageSize' => page_size,
@@ -331,7 +331,7 @@ module Twilio
331
331
  end
332
332
 
333
333
  ##
334
- # @return [Hash] The set of Boolean properties that indicate whether a phone number can receive calls or messages. Capabilities are `Voice`, `SMS`, and `MMS` and each capability can be: `true` or `false`.
334
+ # @return [TrunkingV1TrunkPhoneNumberCapabilities]
335
335
  def capabilities
336
336
  @properties['capabilities']
337
337
  end
@@ -56,6 +56,18 @@ module Twilio
56
56
  # @param [String] business_contact_phone The phone number of the contact for the business or organization using the Tollfree number.
57
57
  # @param [String] theme_set_id Theme id for styling the inquiry form.
58
58
  # @param [Boolean] skip_messaging_use_case Skip the messaging use case screen of the inquiry form.
59
+ # @param [String] business_registration_number The Business Registration Number of the business or organization.
60
+ # @param [String] business_registration_authority The Business Registration Authority of the business or organization.
61
+ # @param [String] business_registration_country The Business Registration Country of the business or organization.
62
+ # @param [BusinessType] business_type
63
+ # @param [String] doing_business_as Trade name, sub entity, or downstream business name of business being submitted for verification.
64
+ # @param [String] opt_in_confirmation_message The confirmation message sent to users when they opt in to receive messages.
65
+ # @param [String] help_message_sample A sample help message provided to users.
66
+ # @param [String] privacy_policy_url The URL to the privacy policy for the business or organization.
67
+ # @param [String] terms_and_conditions_url The URL to the terms and conditions for the business or organization.
68
+ # @param [Boolean] age_gated_content Indicates if the content is age gated.
69
+ # @param [String] external_reference_id A legally recognized business registration number.
70
+ # @param [Array[String]] opt_in_keywords List of keywords that users can text in to opt in to receive messages.
59
71
  # @return [ComplianceTollfreeInquiriesInstance] Created ComplianceTollfreeInquiriesInstance
60
72
  def create(
61
73
  tollfree_phone_number: nil,
@@ -81,7 +93,19 @@ module Twilio
81
93
  business_contact_email: :unset,
82
94
  business_contact_phone: :unset,
83
95
  theme_set_id: :unset,
84
- skip_messaging_use_case: :unset
96
+ skip_messaging_use_case: :unset,
97
+ business_registration_number: :unset,
98
+ business_registration_authority: :unset,
99
+ business_registration_country: :unset,
100
+ business_type: :unset,
101
+ doing_business_as: :unset,
102
+ opt_in_confirmation_message: :unset,
103
+ help_message_sample: :unset,
104
+ privacy_policy_url: :unset,
105
+ terms_and_conditions_url: :unset,
106
+ age_gated_content: :unset,
107
+ external_reference_id: :unset,
108
+ opt_in_keywords: :unset
85
109
  )
86
110
 
87
111
  data = Twilio::Values.of({
@@ -109,6 +133,18 @@ module Twilio
109
133
  'BusinessContactPhone' => business_contact_phone,
110
134
  'ThemeSetId' => theme_set_id,
111
135
  'SkipMessagingUseCase' => skip_messaging_use_case,
136
+ 'BusinessRegistrationNumber' => business_registration_number,
137
+ 'BusinessRegistrationAuthority' => business_registration_authority,
138
+ 'BusinessRegistrationCountry' => business_registration_country,
139
+ 'BusinessType' => business_type,
140
+ 'DoingBusinessAs' => doing_business_as,
141
+ 'OptInConfirmationMessage' => opt_in_confirmation_message,
142
+ 'HelpMessageSample' => help_message_sample,
143
+ 'PrivacyPolicyUrl' => privacy_policy_url,
144
+ 'TermsAndConditionsUrl' => terms_and_conditions_url,
145
+ 'AgeGatedContent' => age_gated_content,
146
+ 'ExternalReferenceId' => external_reference_id,
147
+ 'OptInKeywords' => Twilio.serialize_list(opt_in_keywords) { |e| e },
112
148
  })
113
149
 
114
150
  headers = Twilio::Values.of({'Content-Type' => 'application/x-www-form-urlencoded', })
@@ -1,3 +1,3 @@
1
1
  module Twilio
2
- VERSION = '7.8.8'
2
+ VERSION = '7.9.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twilio-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.8.8
4
+ version: 7.9.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Twilio API Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-12-03 00:00:00.000000000 Z
11
+ date: 2026-01-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jwt
@@ -238,12 +238,14 @@ files:
238
238
  - lib/twilio-ruby/credential/orgs_credential_provider.rb
239
239
  - lib/twilio-ruby/framework/request.rb
240
240
  - lib/twilio-ruby/framework/response.rb
241
+ - lib/twilio-ruby/framework/rest/api_v1_version.rb
241
242
  - lib/twilio-ruby/framework/rest/domain.rb
242
243
  - lib/twilio-ruby/framework/rest/error.rb
243
244
  - lib/twilio-ruby/framework/rest/helper.rb
244
245
  - lib/twilio-ruby/framework/rest/obsolete_client.rb
245
246
  - lib/twilio-ruby/framework/rest/page.rb
246
247
  - lib/twilio-ruby/framework/rest/resource.rb
248
+ - lib/twilio-ruby/framework/rest/token_page.rb
247
249
  - lib/twilio-ruby/framework/rest/version.rb
248
250
  - lib/twilio-ruby/framework/serialize.rb
249
251
  - lib/twilio-ruby/framework/values.rb
@@ -610,6 +612,7 @@ files:
610
612
  - lib/twilio-ruby/rest/messaging/v1/usecase.rb
611
613
  - lib/twilio-ruby/rest/messaging/v2.rb
612
614
  - lib/twilio-ruby/rest/messaging/v2/channels_sender.rb
615
+ - lib/twilio-ruby/rest/messaging/v2/domain_certs.rb
613
616
  - lib/twilio-ruby/rest/messaging/v2/typing_indicator.rb
614
617
  - lib/twilio-ruby/rest/messaging_base.rb
615
618
  - lib/twilio-ruby/rest/monitor.rb