telnyx 2.9.0 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (211) hide show
  1. checksums.yaml +4 -4
  2. data/.github/scripts/before_install.sh +10 -9
  3. data/.github/workflows/publish-gem-on-release.yml +6 -6
  4. data/.github/workflows/ruby.yml +4 -4
  5. data/.rubocop.yml +1 -1
  6. data/Gemfile +7 -8
  7. data/README.md +30 -9
  8. data/Spec3.json +77839 -0
  9. data/VERSION +1 -1
  10. data/lib/telnyx/access_control_ip.rb +13 -0
  11. data/lib/telnyx/access_ip_range.rb +12 -0
  12. data/lib/telnyx/address.rb +9 -0
  13. data/lib/telnyx/api_operations/delete.rb +1 -1
  14. data/lib/telnyx/api_resource.rb +4 -1
  15. data/lib/telnyx/authentication_providers.rb +12 -0
  16. data/lib/telnyx/available_phone_number.rb +5 -0
  17. data/lib/telnyx/balance.rb +12 -0
  18. data/lib/telnyx/batch_mdr_report.rb +15 -0
  19. data/lib/telnyx/brand.rb +20 -0
  20. data/lib/telnyx/bulk_creation.rb +21 -0
  21. data/lib/telnyx/bulk_credential.rb +16 -0
  22. data/lib/telnyx/bulk_phone_number_campaign.rb +23 -0
  23. data/lib/telnyx/bulk_sim_card_action.rb +9 -0
  24. data/lib/telnyx/business_identitie.rb +9 -0
  25. data/lib/telnyx/call.rb +2 -2
  26. data/lib/telnyx/call_event.rb +9 -0
  27. data/lib/telnyx/call_recording.rb +12 -0
  28. data/lib/telnyx/campaign.rb +42 -0
  29. data/lib/telnyx/cdr_usage_report.rb +13 -0
  30. data/lib/telnyx/channel_zone.rb +10 -0
  31. data/lib/telnyx/comment.rb +20 -0
  32. data/lib/telnyx/conference.rb +1 -1
  33. data/lib/telnyx/connection.rb +5 -0
  34. data/lib/telnyx/csv_download.rb +10 -0
  35. data/lib/telnyx/custom_storage_credential.rb +7 -0
  36. data/lib/telnyx/detail_record.rb +9 -0
  37. data/lib/telnyx/dialogflow_connection.rb +20 -0
  38. data/lib/telnyx/document.rb +20 -0
  39. data/lib/telnyx/dynamic_emergency_address.rb +12 -0
  40. data/lib/telnyx/dynamic_emergency_endpoint.rb +12 -0
  41. data/lib/telnyx/embedding.rb +14 -0
  42. data/lib/telnyx/enum.rb +22 -0
  43. data/lib/telnyx/fax.rb +14 -0
  44. data/lib/telnyx/global_ip.rb +10 -0
  45. data/lib/telnyx/global_ip_allowed_port.rb +8 -0
  46. data/lib/telnyx/global_ip_assignment.rb +12 -0
  47. data/lib/telnyx/global_ip_assignment_health.rb +8 -0
  48. data/lib/telnyx/global_ip_assignment_usage.rb +8 -0
  49. data/lib/telnyx/global_ip_latency.rb +8 -0
  50. data/lib/telnyx/global_ip_protocol.rb +8 -0
  51. data/lib/telnyx/global_ip_usage.rb +8 -0
  52. data/lib/telnyx/inference.rb +9 -0
  53. data/lib/telnyx/inventory_coverage.rb +9 -0
  54. data/lib/telnyx/ledger_billing_group_report.rb +9 -0
  55. data/lib/telnyx/managed_account.rb +32 -0
  56. data/lib/telnyx/mdr_usage_report.rb +21 -0
  57. data/lib/telnyx/media.rb +21 -0
  58. data/lib/telnyx/message_number_pool.rb +9 -0
  59. data/lib/telnyx/messaging_hosted_number_order.rb +21 -0
  60. data/lib/telnyx/messaging_profile.rb +14 -2
  61. data/lib/telnyx/messaging_tollfree_verification.rb +12 -0
  62. data/lib/telnyx/messaging_url_domain.rb +9 -0
  63. data/lib/telnyx/mobile_operator_network.rb +9 -0
  64. data/lib/telnyx/mobile_push_credential.rb +11 -0
  65. data/lib/telnyx/network.rb +19 -0
  66. data/lib/telnyx/notification_channel.rb +12 -0
  67. data/lib/telnyx/notification_event.rb +9 -0
  68. data/lib/telnyx/notification_event_condition.rb +9 -0
  69. data/lib/telnyx/notification_profile.rb +12 -0
  70. data/lib/telnyx/notification_setting.rb +12 -0
  71. data/lib/telnyx/number_block_order.rb +10 -0
  72. data/lib/telnyx/ota_update.rb +9 -0
  73. data/lib/telnyx/partner_campaign.rb +32 -0
  74. data/lib/telnyx/phone_number.rb +6 -0
  75. data/lib/telnyx/phone_number_block_job.rb +14 -0
  76. data/lib/telnyx/phone_number_campaigns.rb +19 -0
  77. data/lib/telnyx/portability_check.rb +9 -0
  78. data/lib/telnyx/porting_order.rb +39 -1
  79. data/lib/telnyx/portout.rb +9 -0
  80. data/lib/telnyx/private_wireless_gateway.rb +11 -0
  81. data/lib/telnyx/public_internet_gateway.rb +11 -0
  82. data/lib/telnyx/region.rb +9 -0
  83. data/lib/telnyx/requirement.rb +8 -0
  84. data/lib/telnyx/requirement_type.rb +8 -0
  85. data/lib/telnyx/room.rb +20 -0
  86. data/lib/telnyx/room_composition.rb +11 -0
  87. data/lib/telnyx/room_participant.rb +9 -0
  88. data/lib/telnyx/room_recording.rb +10 -0
  89. data/lib/telnyx/room_session.rb +18 -0
  90. data/lib/telnyx/short_code.rb +10 -0
  91. data/lib/telnyx/sim_card.rb +28 -2
  92. data/lib/telnyx/sim_card_action.rb +12 -0
  93. data/lib/telnyx/sim_card_data_usage_notification.rb +12 -0
  94. data/lib/telnyx/sim_card_group.rb +21 -0
  95. data/lib/telnyx/sim_card_group_action.rb +8 -0
  96. data/lib/telnyx/sim_card_order.rb +10 -0
  97. data/lib/telnyx/summary.rb +9 -0
  98. data/lib/telnyx/telephony_credential.rb +22 -0
  99. data/lib/telnyx/telnyx_client.rb +1 -2
  100. data/lib/telnyx/texml_application.rb +9 -0
  101. data/lib/telnyx/verification.rb +3 -3
  102. data/lib/telnyx/verified_calls_display_profile.rb +17 -0
  103. data/lib/telnyx/verify_profile.rb +1 -0
  104. data/lib/telnyx/version.rb +1 -1
  105. data/lib/telnyx/virtual_cross_connect.rb +20 -0
  106. data/lib/telnyx/virtual_cross_connect_region.rb +9 -0
  107. data/lib/telnyx/wdr.rb +13 -0
  108. data/lib/telnyx/webhook_deliverie.rb +9 -0
  109. data/lib/telnyx/wireguard_interface.rb +11 -0
  110. data/lib/telnyx/wireguard_peer.rb +21 -0
  111. data/lib/telnyx.rb +67 -3
  112. data/server.js +31 -0
  113. data/telnyx.gemspec +4 -2
  114. data/test/openapi/README.md +31 -4
  115. data/test/telnyx/api_resource_test.rb +28 -22
  116. data/test/telnyx/available_phone_number_test.rb +6 -0
  117. data/test/telnyx/batch_mdr_report_test.rb +39 -0
  118. data/test/telnyx/billing_group_test.rb +12 -8
  119. data/test/telnyx/bulk_credential_test.rb +20 -0
  120. data/test/telnyx/bulk_sim_card_action_test.rb +22 -0
  121. data/test/telnyx/business_identitie_test.rb +25 -0
  122. data/test/telnyx/call_control_application_test.rb +13 -9
  123. data/test/telnyx/call_control_test.rb +24 -23
  124. data/test/telnyx/call_event_test.rb +14 -0
  125. data/test/telnyx/call_recording_test.rb +28 -0
  126. data/test/telnyx/call_test.rb +29 -0
  127. data/test/telnyx/campaign_test.rb +32 -0
  128. data/test/telnyx/cdr_usage_report_test.rb +15 -0
  129. data/test/telnyx/channel_zone_test.rb +14 -0
  130. data/test/telnyx/comment_test.rb +32 -0
  131. data/test/telnyx/conference_test.rb +27 -16
  132. data/test/telnyx/connection_test.rb +8 -1
  133. data/test/telnyx/credential_connection_test.rb +5 -4
  134. data/test/telnyx/csv_download_test.rb +33 -0
  135. data/test/telnyx/custom_storage_credential_test.rb +17 -0
  136. data/test/telnyx/detail_record_test.rb +15 -0
  137. data/test/telnyx/dialogflow_connection_test.rb +32 -0
  138. data/test/telnyx/embedding_test.rb +27 -0
  139. data/test/telnyx/enum_test.rb +15 -0
  140. data/test/telnyx/fax_application_test.rb +5 -4
  141. data/test/telnyx/fax_test.rb +13 -4
  142. data/test/telnyx/fqdn_connection_test.rb +5 -5
  143. data/test/telnyx/fqdn_test.rb +12 -7
  144. data/test/telnyx/global_ip_allowed_port_test.rb +14 -0
  145. data/test/telnyx/global_ip_assignment_health_test.rb +14 -0
  146. data/test/telnyx/global_ip_assignment_test.rb +44 -0
  147. data/test/telnyx/global_ip_latency_test.rb +14 -0
  148. data/test/telnyx/global_ip_protocol_test.rb +14 -0
  149. data/test/telnyx/global_ip_test.rb +35 -0
  150. data/test/telnyx/global_ip_usage_test.rb +14 -0
  151. data/test/telnyx/inference_test.rb +13 -0
  152. data/test/telnyx/ip_connection_test.rb +12 -8
  153. data/test/telnyx/ip_test.rb +12 -8
  154. data/test/telnyx/ledger_billing_group_report_test.rb +18 -0
  155. data/test/telnyx/managed_account_test.rb +42 -0
  156. data/test/telnyx/mdr_usage_report_test.rb +47 -0
  157. data/test/telnyx/message_number_pool_test.rb +18 -0
  158. data/test/telnyx/message_test.rb +2 -2
  159. data/test/telnyx/messaging_phone_number_test.rb +2 -1
  160. data/test/telnyx/messaging_profile_test.rb +27 -14
  161. data/test/telnyx/messaging_tollfree_verification_test.rb +71 -0
  162. data/test/telnyx/messaging_url_domain_test.rb +14 -0
  163. data/test/telnyx/mobile_operator_network_test.rb +15 -0
  164. data/test/telnyx/mobile_push_credential_test.rb +33 -0
  165. data/test/telnyx/network_test.rb +49 -0
  166. data/test/telnyx/number_block_order_test.rb +28 -0
  167. data/test/telnyx/number_order_document_test.rb +4 -3
  168. data/test/telnyx/number_order_test.rb +3 -2
  169. data/test/telnyx/number_reservation_test.rb +2 -2
  170. data/test/telnyx/ota_update_test.rb +20 -0
  171. data/test/telnyx/phone_number_block_job_test.rb +25 -0
  172. data/test/telnyx/phone_number_regulatory_requirement_test.rb +2 -1
  173. data/test/telnyx/phone_number_test.rb +8 -6
  174. data/test/telnyx/porting_order_test.rb +45 -10
  175. data/test/telnyx/private_wireless_gateway_test.rb +32 -0
  176. data/test/telnyx/public_internet_gateway_test.rb +32 -0
  177. data/test/telnyx/queue_test.rb +9 -6
  178. data/test/telnyx/region_test.rb +14 -0
  179. data/test/telnyx/regulatory_requirement_test.rb +6 -3
  180. data/test/telnyx/requirement_test.rb +22 -0
  181. data/test/telnyx/requirement_type_test.rb +22 -0
  182. data/test/telnyx/room_composition_test.rb +32 -0
  183. data/test/telnyx/room_participant_test.rb +19 -0
  184. data/test/telnyx/room_recording_test.rb +27 -0
  185. data/test/telnyx/room_session_test.rb +47 -0
  186. data/test/telnyx/room_test.rb +52 -0
  187. data/test/telnyx/short_code_test.rb +30 -0
  188. data/test/telnyx/sim_card_data_usage_notification_test.rb +42 -0
  189. data/test/telnyx/sim_card_group_action_test.rb +22 -0
  190. data/test/telnyx/sim_card_group_test.rb +59 -0
  191. data/test/telnyx/sim_card_order_test.rb +27 -0
  192. data/test/telnyx/sim_card_test.rb +75 -10
  193. data/test/telnyx/summary_test.rb +13 -0
  194. data/test/telnyx/telephony_credential_test.rb +35 -6
  195. data/test/telnyx/telnyx_client_test.rb +1 -0
  196. data/test/telnyx/texml_application_test.rb +25 -0
  197. data/test/telnyx/verification_test.rb +6 -4
  198. data/test/telnyx/verified_calls_display_profile_test.rb +33 -0
  199. data/test/telnyx/verify_profile_test.rb +16 -7
  200. data/test/telnyx/virtual_cross_connect_region_test.rb +22 -0
  201. data/test/telnyx/virtual_cross_connect_test.rb +49 -0
  202. data/test/telnyx/wdr_test.rb +14 -0
  203. data/test/telnyx/webhook_deliverie_test.rb +23 -0
  204. data/test/telnyx/wireguard_interface_test.rb +32 -0
  205. data/test/telnyx/wireguard_peer_test.rb +48 -0
  206. data/test/test_helper.rb +10 -26
  207. metadata +237 -37
  208. data/examples/2 factor authentication/Gemfile +0 -7
  209. data/examples/2 factor authentication/main.rb +0 -67
  210. data/examples/2 factor authentication/readme.md +0 -5
  211. data/test/telnyx_mock.rb +0 -78
@@ -6,20 +6,45 @@ module Telnyx
6
6
  extend APIOperations::NestedResource
7
7
  extend APIOperations::List
8
8
 
9
- ACTIONS = %w[enable disable].freeze
9
+ ACTIONS = %w[enable disable set_standby public_ip wireless_connectivity_logs device_details set_public_ip set_network_preferences remove_public_ip delete_network_preferences].freeze
10
10
  ACTIONS.each do |action|
11
11
  nested_resource_class_methods action,
12
12
  path: %W[actions #{action}],
13
13
  operations: [:create],
14
14
  instance_methods: { create: action }
15
15
  end
16
+ nested_resource_class_methods :device_details,
17
+ path: ["device_details"],
18
+ operations: %i[list],
19
+ instance_methods: { list: "device_details" }
20
+ nested_resource_class_methods :activation_code,
21
+ path: ["activation_code"],
22
+ operations: %i[list],
23
+ instance_methods: { list: "activation_code" }
16
24
 
17
25
  def self.register(params = {}, opts = {})
18
26
  resp, opts = request(:post, "/v2/actions/register/sim_cards", params, opts)
19
27
  Util.convert_to_telnyx_object(resp.data, opts)
20
28
  end
21
29
 
22
- OBJECT_NAME = "sim_card".freeze
30
+ # Additional action to validate registration codes
31
+ def self.validate_registration_codes(params = {}, opts = {})
32
+ opts = Util.normalize_opts(opts)
33
+ resp, opts = request(:post, "/v2/sim_cards/actions/validate_registration_codes", params, opts)
34
+ Util.convert_to_telnyx_object(resp.data, opts)
35
+ end
36
+
37
+ # Additional action to bulk_set_public_ips
38
+ def self.bulk_set_public_ips(params = {}, opts = {})
39
+ opts = Util.normalize_opts(opts)
40
+ resp, opts = request(:post, "/v2/sim_cards/actions/bulk_set_public_ips", params, opts)
41
+ Util.convert_to_telnyx_object(resp.data, opts)
42
+ end
43
+
44
+ def self.network_preferences(params = {}, opts = {})
45
+ resp, opts = request(:put, "/v2/actions/network_preferences/sim_cards", params, opts)
46
+ Util.convert_to_telnyx_object(resp.data, opts)
47
+ end
23
48
 
24
49
  # depreciated api
25
50
  def activate
@@ -31,5 +56,6 @@ module Telnyx
31
56
  warn "[DEPRECATION] SimCard#deactivate is deprecated, use enable instead."
32
57
  disable
33
58
  end
59
+ OBJECT_NAME = "sim_card".freeze
34
60
  end
35
61
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class SimCardAction < APIResource
5
+ extend APIOperations::List
6
+ extend APIOperations::Create
7
+ include APIOperations::Delete
8
+ include APIOperations::Save
9
+
10
+ OBJECT_NAME = "sim_card_actions".freeze
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class SimCardDataUsageNotification < APIResource
5
+ extend APIOperations::List
6
+ extend APIOperations::Create
7
+ include APIOperations::Delete
8
+ include APIOperations::Save
9
+
10
+ OBJECT_NAME = "sim_card_data_usage_notification".freeze
11
+ end
12
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class SimCardGroup < APIResource
5
+ extend APIOperations::List
6
+ extend APIOperations::Create
7
+ include APIOperations::Delete
8
+ include APIOperations::Save
9
+ extend APIOperations::NestedResource
10
+
11
+ ACTIONS = %w[set_private_wireless_gateway remove_private_wireless_gateway].freeze
12
+ ACTIONS.each do |action|
13
+ nested_resource_class_methods action,
14
+ path: %W[actions #{action}],
15
+ operations: [:create],
16
+ instance_methods: { create: action }
17
+ end
18
+
19
+ OBJECT_NAME = "sim_card_group".freeze
20
+ end
21
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class SimCardGroupAction < APIResource
5
+ extend APIOperations::List
6
+ OBJECT_NAME = "sim_card_group_action".freeze
7
+ end
8
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class SimCardOrder < APIResource
5
+ extend APIOperations::List
6
+ extend APIOperations::Create
7
+
8
+ OBJECT_NAME = "sim_card_order".freeze
9
+ end
10
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class Summary < APIResource
5
+ extend Telnyx::APIOperations::Create
6
+
7
+ OBJECT_NAME = "ai/summarize".freeze
8
+ end
9
+ end
@@ -6,6 +6,28 @@ module Telnyx
6
6
  extend Telnyx::APIOperations::Create
7
7
  include Telnyx::APIOperations::Save
8
8
  include Telnyx::APIOperations::Delete
9
+ extend APIOperations::NestedResource
10
+ ACTIONS = %w[activate deactivate].freeze
11
+
12
+ ACTIONS.each do |action|
13
+ nested_resource_class_methods action,
14
+ path: %W[actions #{action}],
15
+ operations: [:create],
16
+ instance_methods: { create: action }
17
+ end
18
+
19
+ %w[token].each do |action|
20
+ nested_resource_class_methods action,
21
+ path: %W[#{action}],
22
+ operations: [:create],
23
+ instance_methods: { create: action }
24
+ end
25
+ # Additional action to list tags
26
+ def self.tags(params = {}, opts = {})
27
+ opts = Util.normalize_opts(opts)
28
+ resp, opts = request(:get, "/v2/telephony_credentials/tags", params, opts)
29
+ ListObject.construct_from(resp.data, opts)
30
+ end
9
31
 
10
32
  OBJECT_NAME = "telephony_credential".freeze
11
33
  end
@@ -32,7 +32,6 @@ module Telnyx
32
32
  # object per thread.
33
33
  Thread.current[:telnyx_client_default_conn] ||= begin
34
34
  conn = Faraday.new do |builder|
35
- builder.use Faraday::Request::Multipart
36
35
  builder.use Faraday::Request::UrlEncoded
37
36
  builder.use Faraday::Response::RaiseError
38
37
 
@@ -411,7 +410,7 @@ module Telnyx
411
410
  body: body,
412
411
  request_id: context.request_id)
413
412
 
414
- return unless context.request_id
413
+ nil unless context.request_id
415
414
  end
416
415
  private :log_response
417
416
 
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class TexmlApplication < APIResource
5
+ extend Telnyx::APIOperations::List
6
+
7
+ OBJECT_NAME = "texml_application".freeze
8
+ end
9
+ end
@@ -19,9 +19,9 @@ module Telnyx
19
19
  retrieve: "by_telephone",
20
20
  }
21
21
 
22
- def self.submit_code(phone_number: nil, code: nil)
23
- url = "#{resource_url}/by_phone_number/#{CGI.escape phone_number}/actions/verify"
24
- resp, _opts = request(:post, url, code: code)
22
+ def self.submit_code(params = {})
23
+ url = "#{resource_url}/by_phone_number/#{CGI.escape params[:phone_number]}/actions/verify"
24
+ resp, _opts = request(:post, url, params)
25
25
  Response.construct_from resp.data[:data]
26
26
  end
27
27
 
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class VerifiedCallsDisplayProfile < APIResource
5
+ extend APIOperations::List
6
+ extend APIOperations::NestedResource
7
+
8
+ %w[verification_request].each do |action|
9
+ nested_resource_class_methods action,
10
+ path: %W[#{action}],
11
+ operations: [:create],
12
+ instance_methods: { create: action }
13
+ end
14
+
15
+ OBJECT_NAME = "verified_calls_display_profile".freeze
16
+ end
17
+ end
@@ -5,6 +5,7 @@ module Telnyx
5
5
  extend APIOperations::List
6
6
  extend APIOperations::Create
7
7
  include APIOperations::Save
8
+ include APIOperations::Delete
8
9
 
9
10
  OBJECT_NAME = "verify_profile".freeze
10
11
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Telnyx
4
- VERSION = "2.9.0".freeze
4
+ VERSION = "3.0.1".freeze
5
5
  end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class VirtualCrossConnect < APIResource
5
+ include APIOperations::Delete
6
+ include APIOperations::Save
7
+ extend APIOperations::List
8
+ extend APIOperations::Create
9
+ extend APIOperations::NestedResource
10
+ ACTIONS = %w[provision].freeze
11
+ ACTIONS.each do |action|
12
+ nested_resource_class_methods action,
13
+ path: %W[actions #{action}],
14
+ operations: [:create],
15
+ instance_methods: { create: action }
16
+ end
17
+
18
+ OBJECT_NAME = "virtual_cross_connect".freeze
19
+ end
20
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class VirtualCrossConnectRegion < APIResource
5
+ extend APIOperations::List
6
+
7
+ OBJECT_NAME = "virtual_cross_connect_region".freeze
8
+ end
9
+ end
data/lib/telnyx/wdr.rb ADDED
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class Wdr < APIResource
5
+ extend APIOperations::List
6
+ def self.resource_path(id = nil)
7
+ return "reports/wdrs/#{CGI.escape(id)}" if id
8
+
9
+ "reports/wdrs"
10
+ end
11
+ OBJECT_NAME = "/reports/wdr".freeze
12
+ end
13
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class WebhookDeliverie < APIResource
5
+ extend APIOperations::List
6
+
7
+ OBJECT_NAME = "webhook_deliverie".freeze
8
+ end
9
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class WireguardInterface < APIResource
5
+ include Telnyx::APIOperations::Delete
6
+ extend Telnyx::APIOperations::List
7
+ extend Telnyx::APIOperations::Create
8
+
9
+ OBJECT_NAME = "wireguard_interface".freeze
10
+ end
11
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class WireguardPeer < APIResource
5
+ include APIOperations::Delete
6
+ include APIOperations::Save
7
+ extend APIOperations::List
8
+ extend APIOperations::Create
9
+ extend APIOperations::NestedResource
10
+ nested_resource_class_methods "config",
11
+ path: "config",
12
+ operations: [:list],
13
+ instance_methods: { list: "config" }
14
+ nested_resource_class_methods "allowed_ips",
15
+ path: "allowed_ips",
16
+ operations: [:list],
17
+ instance_methods: { list: "allowed_ips" }
18
+
19
+ OBJECT_NAME = "wireguard_peer".freeze
20
+ end
21
+ end
data/lib/telnyx.rb CHANGED
@@ -4,6 +4,9 @@
4
4
  # API spec at https://developers.telnyx.com
5
5
  require "cgi"
6
6
  require "faraday"
7
+ require "faraday/retry"
8
+ require "faraday/multipart"
9
+ require "faraday/net_http_persistent"
7
10
  require "json"
8
11
  require "logger"
9
12
  require "openssl"
@@ -46,33 +49,94 @@ require "telnyx/conference"
46
49
  require "telnyx/connection"
47
50
  require "telnyx/credential_connection"
48
51
  require "telnyx/event"
49
- require "telnyx/fax"
50
52
  require "telnyx/fax_application"
53
+ require "telnyx/fax"
51
54
  require "telnyx/fqdn_connection"
52
55
  require "telnyx/fqdn"
53
56
  require "telnyx/ip_connection"
54
57
  require "telnyx/ip"
55
58
  require "telnyx/message"
59
+ require "telnyx/message_number_pool"
56
60
  require "telnyx/messaging_phone_number"
57
61
  require "telnyx/messaging_profile"
62
+ require "telnyx/mobile_operator_network"
63
+ require "telnyx/network"
64
+ require "telnyx/region"
58
65
  require "telnyx/number_lookup"
59
66
  require "telnyx/number_order_document"
60
67
  require "telnyx/number_order"
61
68
  require "telnyx/number_reservation"
69
+ require "telnyx/ota_update"
62
70
  require "telnyx/outbound_voice_profile"
63
71
  require "telnyx/phone_number_regulatory_requirement"
64
72
  require "telnyx/phone_number"
65
- require "telnyx/portout"
66
73
  require "telnyx/porting_order"
74
+ require "telnyx/portout"
67
75
  require "telnyx/public_key"
68
- require "telnyx/queue"
69
76
  require "telnyx/queue_call"
77
+ require "telnyx/queue"
70
78
  require "telnyx/regulatory_requirement"
71
79
  require "telnyx/sim_card"
72
80
  require "telnyx/telephony_credential"
73
81
  require "telnyx/verification"
74
82
  require "telnyx/verify_profile"
75
83
  require "telnyx/wireless_detail_records_report"
84
+ require "telnyx/room_composition"
85
+ require "telnyx/room_participant"
86
+ require "telnyx/room_recording"
87
+ require "telnyx/room_session"
88
+ require "telnyx/room"
89
+ require "telnyx/wireguard_interface"
90
+ require "telnyx/short_code"
91
+ require "telnyx/wireguard_peer"
92
+ require "telnyx/virtual_cross_connect_region"
93
+ require "telnyx/virtual_cross_connect"
94
+ require "telnyx/sim_card_group"
95
+ require "telnyx/sim_card_order"
96
+ require "telnyx/sim_card_group_action"
97
+ require "telnyx/sim_card_data_usage_notification"
98
+ require "telnyx/requirement_type"
99
+ require "telnyx/requirement"
100
+ require "telnyx/batch_mdr_report"
101
+ require "telnyx/cdr_usage_report"
102
+ require "telnyx/mdr_usage_report"
103
+ require "telnyx/inference"
104
+ require "telnyx/summary"
105
+ require "telnyx/call_recording"
106
+ require "telnyx/public_internet_gateway"
107
+ require "telnyx/private_wireless_gateway"
108
+ require "telnyx/csv_download"
109
+ require "telnyx/number_block_order"
110
+ require "telnyx/mobile_push_credential"
111
+ require "telnyx/messaging_tollfree_verification"
112
+ require "telnyx/phone_number_block_job"
113
+ require "telnyx/wdr"
114
+ require "telnyx/embedding"
115
+ require "telnyx/webhook_deliverie"
116
+ require "telnyx/call_event"
117
+ require "telnyx/messaging_url_domain"
118
+ require "telnyx/verified_calls_display_profile"
119
+ require "telnyx/detail_record"
120
+ require "telnyx/business_identitie"
121
+ require "telnyx/managed_account"
122
+ require "telnyx/ledger_billing_group_report"
123
+ require "telnyx/global_ip"
124
+ require "telnyx/global_ip_usage"
125
+ require "telnyx/global_ip_protocol"
126
+ require "telnyx/global_ip_latency"
127
+ require "telnyx/global_ip_assignment"
128
+ require "telnyx/global_ip_assignment_health"
129
+ require "telnyx/global_ip_assignment_usage"
130
+ require "telnyx/global_ip_allowed_port"
131
+ require "telnyx/dialogflow_connection"
132
+ require "telnyx/channel_zone"
133
+ require "telnyx/bulk_sim_card_action"
134
+ require "telnyx/campaign"
135
+ require "telnyx/comment"
136
+ require "telnyx/enum"
137
+ require "telnyx/custom_storage_credential"
138
+ require "telnyx/texml_application"
139
+ require "telnyx/bulk_credential"
76
140
 
77
141
  module Telnyx
78
142
  @app_info = nil
data/server.js ADDED
@@ -0,0 +1,31 @@
1
+ const http = require('http');
2
+ const httpProxy = require('http-proxy');
3
+
4
+ // Create a proxy server with custom application logic
5
+ const proxy = httpProxy.createProxyServer({});
6
+
7
+ // Your Prism mock server URL
8
+ const PRISM_MOCK_SERVER = 'http://127.0.0.1:4010'; // Replace with your Prism mock server URL
9
+
10
+ // Create your server that makes an operation on the request
11
+ const server = http.createServer((req, res) => {
12
+ // Modify the URL by removing the '/v2' prefix
13
+ req.url = req.url.replace(/^\/v2(\/|$)/, '/');
14
+
15
+ // Forward the modified request to the Prism mock server
16
+ proxy.web(req, res, { target: PRISM_MOCK_SERVER });
17
+ });
18
+
19
+ // Listen to the `error` event and log it
20
+ proxy.on('error', (err, req, res) => {
21
+ console.error('Proxy error:', err);
22
+ res.end();
23
+ });
24
+
25
+ // Choose the port for the proxy server
26
+ const PORT = 8000; // You can choose any available port
27
+
28
+ // Start the server
29
+ server.listen(PORT, () => {
30
+ console.log(`Proxy server listening on port ${PORT}`);
31
+ });
data/telnyx.gemspec CHANGED
@@ -7,7 +7,7 @@ require "telnyx/version"
7
7
  Gem::Specification.new do |s|
8
8
  s.name = "telnyx"
9
9
  s.version = Telnyx::VERSION
10
- s.required_ruby_version = ">= 2.1.0"
10
+ s.required_ruby_version = ">= 3.0.0"
11
11
  s.summary = "Ruby bindings for the Telnyx API"
12
12
  s.description = "Telnyx enables anyone to deliver enterprise-grade real-time communications over the internet. See https://telnyx.com for details."
13
13
  s.author = "Telnyx"
@@ -22,7 +22,9 @@ Gem::Specification.new do |s|
22
22
  "source_code_uri" => "https://github.com/team-telnyx/telnyx-ruby",
23
23
  }
24
24
 
25
- s.add_dependency("faraday", ">= 0.13", "< 2.0", "!= 0.16.0", "!= 0.16.1", "!= 0.16.2", "!= 0.17.1")
25
+ s.add_dependency("faraday", ">= 2.5.0")
26
+ s.add_dependency("faraday-multipart", "~> 1.0.4")
27
+ s.add_dependency("faraday-net_http_persistent", "~> 2.1.0")
26
28
  s.add_dependency("net-http-persistent", ">= 3.0", "< 5.0")
27
29
  s.add_dependency("ed25519", "~> 1")
28
30
 
@@ -1,9 +1,36 @@
1
- ## Using custom OpenAPI specification and fixtures files
1
+ # Using custom OpenAPI specification and fixtures files
2
2
 
3
3
  You can place custom OpenAPI specification and fixtures files in this
4
4
  directory. The files must be in JSON format, and must be named `spec3.json`
5
5
  and `fixtures3.json` respectively.
6
6
 
7
- If those files are present, the test suite will start its own telnyx-mock
8
- process on a random available port. In order for this to work, `telnyx-mock`
9
- must be on the `PATH` in the environment used to run the test suite.
7
+ ## Development
8
+
9
+ ### Setup
10
+ The test suite depends on the [Prism Mock Server](https://github.com/stoplightio/prism).
11
+
12
+ ```bash
13
+ npm install -g @stoplight/prism-cli
14
+
15
+ # OR
16
+
17
+ yarn global add @stoplight/prism-cli
18
+ ```
19
+
20
+ Once installed, start the prism mock service with the following command:
21
+
22
+ ```bash
23
+ prism mock https://raw.githubusercontent.com/team-telnyx/openapi/master/openapi/spec3.json
24
+ ```
25
+
26
+ --------
27
+
28
+ One final step -- because the Ruby SDK originally expected to reach the legacy `telnyx-mock` service at port 12111 (in addition to providing a `/v2/` base path), we need to setup a proxy server.
29
+
30
+ You can do this any way you wish, but included is a server.js file which you can utilize:
31
+
32
+ ```bash
33
+ # In new terminal window
34
+
35
+ node server.js
36
+ ```