telnyx 2.9.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) 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 +1 -1
  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 +13 -0
  20. data/lib/telnyx/bulk_creation.rb +21 -0
  21. data/lib/telnyx/bulk_credential.rb +16 -0
  22. data/lib/telnyx/bulk_sim_card_action.rb +9 -0
  23. data/lib/telnyx/business_identitie.rb +9 -0
  24. data/lib/telnyx/call.rb +2 -2
  25. data/lib/telnyx/call_event.rb +9 -0
  26. data/lib/telnyx/call_recording.rb +12 -0
  27. data/lib/telnyx/campaign.rb +34 -0
  28. data/lib/telnyx/cdr_usage_report.rb +13 -0
  29. data/lib/telnyx/channel_zone.rb +10 -0
  30. data/lib/telnyx/comment.rb +20 -0
  31. data/lib/telnyx/conference.rb +1 -1
  32. data/lib/telnyx/connection.rb +5 -0
  33. data/lib/telnyx/csv_download.rb +10 -0
  34. data/lib/telnyx/custom_storage_credential.rb +7 -0
  35. data/lib/telnyx/detail_record.rb +9 -0
  36. data/lib/telnyx/dialogflow_connection.rb +20 -0
  37. data/lib/telnyx/document.rb +20 -0
  38. data/lib/telnyx/dynamic_emergency_address.rb +12 -0
  39. data/lib/telnyx/dynamic_emergency_endpoint.rb +12 -0
  40. data/lib/telnyx/embedding.rb +14 -0
  41. data/lib/telnyx/enum.rb +15 -0
  42. data/lib/telnyx/fax.rb +14 -0
  43. data/lib/telnyx/global_ip.rb +10 -0
  44. data/lib/telnyx/global_ip_allowed_port.rb +8 -0
  45. data/lib/telnyx/global_ip_assignment.rb +12 -0
  46. data/lib/telnyx/global_ip_assignment_health.rb +8 -0
  47. data/lib/telnyx/global_ip_assignment_usage.rb +8 -0
  48. data/lib/telnyx/global_ip_latency.rb +8 -0
  49. data/lib/telnyx/global_ip_protocol.rb +8 -0
  50. data/lib/telnyx/global_ip_usage.rb +8 -0
  51. data/lib/telnyx/inference.rb +9 -0
  52. data/lib/telnyx/inventory_coverage.rb +9 -0
  53. data/lib/telnyx/ledger_billing_group_report.rb +9 -0
  54. data/lib/telnyx/managed_account.rb +32 -0
  55. data/lib/telnyx/mdr_usage_report.rb +21 -0
  56. data/lib/telnyx/media.rb +21 -0
  57. data/lib/telnyx/message_number_pool.rb +9 -0
  58. data/lib/telnyx/messaging_hosted_number_order.rb +21 -0
  59. data/lib/telnyx/messaging_profile.rb +14 -2
  60. data/lib/telnyx/messaging_tollfree_verification.rb +12 -0
  61. data/lib/telnyx/messaging_url_domain.rb +9 -0
  62. data/lib/telnyx/mobile_operator_network.rb +9 -0
  63. data/lib/telnyx/mobile_push_credential.rb +11 -0
  64. data/lib/telnyx/network.rb +19 -0
  65. data/lib/telnyx/notification_channel.rb +12 -0
  66. data/lib/telnyx/notification_event.rb +9 -0
  67. data/lib/telnyx/notification_event_condition.rb +9 -0
  68. data/lib/telnyx/notification_profile.rb +12 -0
  69. data/lib/telnyx/notification_setting.rb +12 -0
  70. data/lib/telnyx/number_block_order.rb +10 -0
  71. data/lib/telnyx/ota_update.rb +9 -0
  72. data/lib/telnyx/phone_number.rb +6 -0
  73. data/lib/telnyx/phone_number_block_job.rb +14 -0
  74. data/lib/telnyx/phone_number_campaigns.rb +12 -0
  75. data/lib/telnyx/portability_check.rb +9 -0
  76. data/lib/telnyx/porting_order.rb +39 -1
  77. data/lib/telnyx/portout.rb +9 -0
  78. data/lib/telnyx/private_wireless_gateway.rb +11 -0
  79. data/lib/telnyx/public_internet_gateway.rb +11 -0
  80. data/lib/telnyx/region.rb +9 -0
  81. data/lib/telnyx/requirement.rb +8 -0
  82. data/lib/telnyx/requirement_type.rb +8 -0
  83. data/lib/telnyx/room.rb +20 -0
  84. data/lib/telnyx/room_composition.rb +11 -0
  85. data/lib/telnyx/room_participant.rb +9 -0
  86. data/lib/telnyx/room_recording.rb +10 -0
  87. data/lib/telnyx/room_session.rb +18 -0
  88. data/lib/telnyx/short_code.rb +10 -0
  89. data/lib/telnyx/sim_card.rb +28 -2
  90. data/lib/telnyx/sim_card_action.rb +12 -0
  91. data/lib/telnyx/sim_card_data_usage_notification.rb +12 -0
  92. data/lib/telnyx/sim_card_group.rb +21 -0
  93. data/lib/telnyx/sim_card_group_action.rb +8 -0
  94. data/lib/telnyx/sim_card_order.rb +10 -0
  95. data/lib/telnyx/summary.rb +9 -0
  96. data/lib/telnyx/telephony_credential.rb +22 -0
  97. data/lib/telnyx/telnyx_client.rb +1 -2
  98. data/lib/telnyx/texml_application.rb +9 -0
  99. data/lib/telnyx/verification.rb +3 -3
  100. data/lib/telnyx/verified_calls_display_profile.rb +17 -0
  101. data/lib/telnyx/verify_profile.rb +1 -0
  102. data/lib/telnyx/version.rb +1 -1
  103. data/lib/telnyx/virtual_cross_connect.rb +20 -0
  104. data/lib/telnyx/virtual_cross_connect_region.rb +9 -0
  105. data/lib/telnyx/wdr.rb +13 -0
  106. data/lib/telnyx/webhook_deliverie.rb +9 -0
  107. data/lib/telnyx/wireguard_interface.rb +11 -0
  108. data/lib/telnyx/wireguard_peer.rb +21 -0
  109. data/lib/telnyx.rb +67 -3
  110. data/server.js +31 -0
  111. data/telnyx.gemspec +4 -2
  112. data/test/telnyx/api_resource_test.rb +25 -21
  113. data/test/telnyx/available_phone_number_test.rb +6 -0
  114. data/test/telnyx/batch_mdr_report_test.rb +35 -0
  115. data/test/telnyx/billing_group_test.rb +12 -8
  116. data/test/telnyx/bulk_credential_test.rb +20 -0
  117. data/test/telnyx/bulk_sim_card_action_test.rb +22 -0
  118. data/test/telnyx/business_identitie_test.rb +25 -0
  119. data/test/telnyx/call_control_application_test.rb +13 -9
  120. data/test/telnyx/call_control_test.rb +24 -23
  121. data/test/telnyx/call_event_test.rb +14 -0
  122. data/test/telnyx/call_recording_test.rb +28 -0
  123. data/test/telnyx/call_test.rb +29 -0
  124. data/test/telnyx/campaign_test.rb +32 -0
  125. data/test/telnyx/cdr_usage_report_test.rb +15 -0
  126. data/test/telnyx/channel_zone_test.rb +14 -0
  127. data/test/telnyx/comment_test.rb +32 -0
  128. data/test/telnyx/conference_test.rb +27 -16
  129. data/test/telnyx/connection_test.rb +8 -1
  130. data/test/telnyx/credential_connection_test.rb +5 -4
  131. data/test/telnyx/csv_download_test.rb +33 -0
  132. data/test/telnyx/custom_storage_credential_test.rb +17 -0
  133. data/test/telnyx/detail_record_test.rb +15 -0
  134. data/test/telnyx/dialogflow_connection_test.rb +32 -0
  135. data/test/telnyx/embedding_test.rb +27 -0
  136. data/test/telnyx/enum_test.rb +15 -0
  137. data/test/telnyx/fax_application_test.rb +5 -4
  138. data/test/telnyx/fax_test.rb +13 -4
  139. data/test/telnyx/fqdn_connection_test.rb +5 -5
  140. data/test/telnyx/fqdn_test.rb +12 -7
  141. data/test/telnyx/global_ip_allowed_port_test.rb +14 -0
  142. data/test/telnyx/global_ip_assignment_health_test.rb +14 -0
  143. data/test/telnyx/global_ip_assignment_test.rb +44 -0
  144. data/test/telnyx/global_ip_latency_test.rb +14 -0
  145. data/test/telnyx/global_ip_protocol_test.rb +14 -0
  146. data/test/telnyx/global_ip_test.rb +35 -0
  147. data/test/telnyx/global_ip_usage_test.rb +14 -0
  148. data/test/telnyx/inference_test.rb +12 -0
  149. data/test/telnyx/ip_connection_test.rb +12 -8
  150. data/test/telnyx/ip_test.rb +12 -8
  151. data/test/telnyx/ledger_billing_group_report_test.rb +18 -0
  152. data/test/telnyx/managed_account_test.rb +42 -0
  153. data/test/telnyx/mdr_usage_report_test.rb +47 -0
  154. data/test/telnyx/message_number_pool_test.rb +18 -0
  155. data/test/telnyx/message_test.rb +2 -2
  156. data/test/telnyx/messaging_phone_number_test.rb +2 -1
  157. data/test/telnyx/messaging_profile_test.rb +26 -14
  158. data/test/telnyx/messaging_tollfree_verification_test.rb +71 -0
  159. data/test/telnyx/messaging_url_domain_test.rb +14 -0
  160. data/test/telnyx/mobile_operator_network_test.rb +15 -0
  161. data/test/telnyx/mobile_push_credential_test.rb +33 -0
  162. data/test/telnyx/network_test.rb +49 -0
  163. data/test/telnyx/number_block_order_test.rb +28 -0
  164. data/test/telnyx/number_order_document_test.rb +4 -3
  165. data/test/telnyx/number_order_test.rb +3 -2
  166. data/test/telnyx/number_reservation_test.rb +2 -2
  167. data/test/telnyx/ota_update_test.rb +20 -0
  168. data/test/telnyx/phone_number_block_job_test.rb +25 -0
  169. data/test/telnyx/phone_number_regulatory_requirement_test.rb +2 -1
  170. data/test/telnyx/phone_number_test.rb +8 -6
  171. data/test/telnyx/porting_order_test.rb +45 -10
  172. data/test/telnyx/private_wireless_gateway_test.rb +32 -0
  173. data/test/telnyx/public_internet_gateway_test.rb +32 -0
  174. data/test/telnyx/queue_test.rb +9 -6
  175. data/test/telnyx/region_test.rb +14 -0
  176. data/test/telnyx/regulatory_requirement_test.rb +6 -3
  177. data/test/telnyx/requirement_test.rb +22 -0
  178. data/test/telnyx/requirement_type_test.rb +22 -0
  179. data/test/telnyx/room_composition_test.rb +32 -0
  180. data/test/telnyx/room_participant_test.rb +19 -0
  181. data/test/telnyx/room_recording_test.rb +27 -0
  182. data/test/telnyx/room_session_test.rb +47 -0
  183. data/test/telnyx/room_test.rb +52 -0
  184. data/test/telnyx/short_code_test.rb +30 -0
  185. data/test/telnyx/sim_card_data_usage_notification_test.rb +42 -0
  186. data/test/telnyx/sim_card_group_action_test.rb +22 -0
  187. data/test/telnyx/sim_card_group_test.rb +59 -0
  188. data/test/telnyx/sim_card_order_test.rb +27 -0
  189. data/test/telnyx/sim_card_test.rb +75 -10
  190. data/test/telnyx/summary_test.rb +12 -0
  191. data/test/telnyx/telephony_credential_test.rb +35 -6
  192. data/test/telnyx/texml_application_test.rb +25 -0
  193. data/test/telnyx/verification_test.rb +4 -4
  194. data/test/telnyx/verified_calls_display_profile_test.rb +33 -0
  195. data/test/telnyx/verify_profile_test.rb +16 -7
  196. data/test/telnyx/virtual_cross_connect_region_test.rb +22 -0
  197. data/test/telnyx/virtual_cross_connect_test.rb +49 -0
  198. data/test/telnyx/wdr_test.rb +14 -0
  199. data/test/telnyx/webhook_deliverie_test.rb +23 -0
  200. data/test/telnyx/wireguard_interface_test.rb +32 -0
  201. data/test/telnyx/wireguard_peer_test.rb +48 -0
  202. data/test/test_helper.rb +10 -26
  203. metadata +235 -37
  204. data/examples/2 factor authentication/Gemfile +0 -7
  205. data/examples/2 factor authentication/main.rb +0 -67
  206. data/examples/2 factor authentication/readme.md +0 -5
  207. data/test/telnyx_mock.rb +0 -78
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.9.0
1
+ 3.1.0
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class AccessIPAddress < APIResource
5
+ include APIOperations::Delete
6
+ include APIOperations::Save
7
+ extend APIOperations::List
8
+ extend APIOperations::Create
9
+
10
+ OBJECT_NAME = "access_ip_address".freeze
11
+ RESOURCE_PATH = "access_ip_addresses".freeze
12
+ end
13
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class AccessIPRange < APIResource
5
+ include APIOperations::Delete
6
+ include APIOperations::Save
7
+ extend APIOperations::List
8
+ extend APIOperations::Create
9
+
10
+ OBJECT_NAME = "access_ip_range".freeze
11
+ end
12
+ end
@@ -5,6 +5,15 @@ module Telnyx
5
5
  include APIOperations::Delete
6
6
  extend APIOperations::List
7
7
  extend APIOperations::Create
8
+ extend Telnyx::APIOperations::NestedResource
9
+
10
+ ACTIONS = %w[validate].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
8
17
 
9
18
  OBJECT_NAME = "address".freeze
10
19
  RESOURCE_PATH = "addresses".freeze
@@ -6,7 +6,7 @@ module Telnyx
6
6
  def delete(params = {}, opts = {})
7
7
  opts = Util.normalize_opts(opts)
8
8
  resp, opts = request(:delete, resource_url, params, opts)
9
- initialize_from(resp.data[:data], opts)
9
+ initialize_from(resp.data[:data], opts) if resp.data[:data].present? # at deletion resp[:data] not present for some apis
10
10
  end
11
11
  end
12
12
  end
@@ -33,7 +33,10 @@ module Telnyx
33
33
  return "/v2/#{resource_path(inner_id)}" if respond_to?("resource_path")
34
34
  return "/v2/#{self::RESOURCE_PATH}" if const_defined?("RESOURCE_PATH")
35
35
 
36
- "/v2/#{self::OBJECT_NAME.downcase.tr('.', '/')}s"
36
+ object_name = self::OBJECT_NAME.downcase
37
+ keywords = %w[generate summarize global_ip_usage global_ip_latency global_ip_assignment_usage global_ip_assignment_health sub_request campaign]
38
+ url_segment = object_name.tr(".", "/")
39
+ keywords.any? { |keyword| url_segment.include?(keyword) } ? "/v2/#{url_segment}" : "/v2/#{url_segment}s"
37
40
  end
38
41
 
39
42
  def self.identified_resource_url(id)
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class AuthenticationProviders < APIResource
5
+ include APIOperations::Delete
6
+ include APIOperations::Save
7
+ extend APIOperations::List
8
+ extend APIOperations::Create
9
+
10
+ OBJECT_NAME = "authentication_providers".freeze
11
+ end
12
+ end
@@ -6,6 +6,11 @@ module Telnyx
6
6
  extend Telnyx::APIOperations::ParamWrapper
7
7
  wrap "list", "filter"
8
8
 
9
+ def self.blocks(params = {}, opts = {})
10
+ resp, opts = request(:get, "/v2/available_phone_number_blocks", params, opts)
11
+ Util.convert_to_telnyx_object(resp.data, opts)
12
+ end
13
+
9
14
  OBJECT_NAME = "available_phone_number".freeze
10
15
  end
11
16
  end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class AccessIPRange < APIResource
5
+ include APIOperations::Delete
6
+ include APIOperations::Save
7
+ extend APIOperations::List
8
+ extend APIOperations::Create
9
+
10
+ OBJECT_NAME = "balance".freeze
11
+ end
12
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class BatchMdrReport < APIResource
5
+ extend APIOperations::List
6
+ extend APIOperations::Create
7
+ include APIOperations::Delete
8
+ def self.resource_path(id = nil)
9
+ return "reports/batch_mdr_reports/#{CGI.escape(id)}" if id
10
+
11
+ "reports/batch_mdr_reports"
12
+ end
13
+ OBJECT_NAME = "/reports/batch_mdr_report".freeze
14
+ end
15
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class Brand < APIResource
5
+ extend APIOperations::List
6
+ extend APIOperations::Create
7
+ extend APIOperations::NestedResource
8
+ include APIOperations::Delete
9
+ include APIOperations::Save
10
+
11
+ OBJECT_NAME = "10dlc/brand".freeze
12
+ end
13
+ end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class BulkCreation < APIResource
5
+ extend Telnyx::APIOperations::List
6
+ extend Telnyx::APIOperations::Create
7
+ include Telnyx::APIOperations::Delete
8
+ include Telnyx::APIOperations::Save
9
+ extend APIOperations::NestedResource
10
+
11
+ ACTIONS = %w[detailedStatus].freeze
12
+ ACTIONS.each do |action|
13
+ nested_resource_class_methods action,
14
+ path: %W[#{action}],
15
+ operations: [:create],
16
+ instance_methods: { create: action }
17
+ end
18
+
19
+ OBJECT_NAME = "10dlc/bulkCreation".freeze
20
+ end
21
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class BulkCredential < APIResource
5
+ def self.bulk_telephony_credentials(params = {}, opts = {})
6
+ resp, opts = request(:post, "/v2/actions/bulk/telephony_credentials", params, opts)
7
+ Util.convert_to_telnyx_object(resp.data, opts)
8
+ end
9
+
10
+ def self.purchase_esims(params = {}, opts = {})
11
+ resp, opts = request(:post, "/v2/actions/purchase/esims", params, opts)
12
+ Util.convert_to_telnyx_object(resp.data, opts)
13
+ end
14
+ OBJECT_NAME = "action".freeze
15
+ end
16
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class BulkSimCardAction < APIResource
5
+ extend Telnyx::APIOperations::List
6
+
7
+ OBJECT_NAME = "bulk_sim_card_action".freeze
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class BusinessIdentitie < APIResource
5
+ extend APIOperations::List
6
+
7
+ OBJECT_NAME = "business_identitie".freeze
8
+ end
9
+ end
data/lib/telnyx/call.rb CHANGED
@@ -31,11 +31,11 @@ module Telnyx
31
31
  end
32
32
  end
33
33
 
34
- ACTIONS = %w[reject answer hangup bridge speak fork_start fork_stop
34
+ ACTIONS = %w[reject answer client_state_update hangup bridge speak fork_start fork_stop
35
35
  gather_using_audio gather_using_speak playback_start
36
36
  playback_stop record_start record_stop send_dtmf transfer
37
37
  transcription_start transcription_stop record_pause
38
- record_resume gather_stop refer enqueue leave_queue].freeze
38
+ record_resume register gather_stop refer enqueue leave_queue streaming_start streaming_stop gather].freeze
39
39
 
40
40
  ACTIONS.each do |action|
41
41
  nested_resource_class_methods action,
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class CallEvent < APIResource
5
+ extend APIOperations::List
6
+
7
+ OBJECT_NAME = "call_event".freeze
8
+ end
9
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class CallRecording < APIResource
5
+ extend APIOperations::List
6
+ extend APIOperations::Create
7
+ include APIOperations::Delete
8
+ include APIOperations::Save
9
+
10
+ OBJECT_NAME = "recording".freeze
11
+ end
12
+ end
@@ -0,0 +1,34 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class Campaign < APIResource
5
+ extend Telnyx::APIOperations::List
6
+ extend Telnyx::APIOperations::Create
7
+ include Telnyx::APIOperations::Delete
8
+ include Telnyx::APIOperations::Save
9
+ extend APIOperations::NestedResource
10
+
11
+ ACTIONS = %w[mnoMetadata operationStatus].freeze
12
+ ACTIONS.each do |action|
13
+ nested_resource_class_methods action,
14
+ path: %W[#{action}],
15
+ operations: [:create],
16
+ instance_methods: { create: action }
17
+ end
18
+ def accept_sharing(params = {}, opts = {})
19
+ resp, opts = request(:post, "/v2/campaign/acceptSharing/#{campaignId.gsub(/\s+/, '+')}", params, opts)
20
+ Util.convert_to_telnyx_object(resp.data, opts)
21
+ end
22
+
23
+ def sharing(params = {}, opts = {})
24
+ resp, opts = request(:get, "/v2/campaign/#{campaignId.gsub(/\s+/, '+')}/sharing", params, opts)
25
+ Util.convert_to_telnyx_object(resp.data, opts)
26
+ end
27
+
28
+ def osr_attributes(params = {}, opts = {})
29
+ resp, opts = request(:get, "/v2/campaign/#{campaignId.gsub(/\s+/, '+')}/osr/attributes", params, opts)
30
+ Util.convert_to_telnyx_object(resp.data, opts)
31
+ end
32
+ OBJECT_NAME = "campaign".freeze
33
+ end
34
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class CdrUsageReport < APIResource
5
+ def self.sync(params = {}, opts = {})
6
+ opts = Util.normalize_opts(opts)
7
+ resp, opts = request(:get, "/v2/reports/cdr_usage_reports/sync", params, opts)
8
+ ListObject.construct_from(resp.data, opts)
9
+ end
10
+
11
+ OBJECT_NAME = "/reports/cdr_usage_report".freeze
12
+ end
13
+ end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class ChannelZone < APIResource
5
+ extend APIOperations::List
6
+ extend APIOperations::NestedResource
7
+ include APIOperations::Save
8
+ OBJECT_NAME = "channel_zone".freeze
9
+ end
10
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class Comment < APIResource
5
+ extend Telnyx::APIOperations::List
6
+ extend Telnyx::APIOperations::Create
7
+ extend APIOperations::NestedResource
8
+
9
+ nested_resource_class_methods "read",
10
+ path: "read",
11
+ operations: [:update],
12
+ instance_methods: { update: "read" }
13
+
14
+ def read(opts = nil)
15
+ self.class.update_read(id, nil, opts)
16
+ end
17
+
18
+ OBJECT_NAME = "comment".freeze
19
+ end
20
+ end
@@ -6,7 +6,7 @@ module Telnyx
6
6
  extend APIOperations::Create
7
7
  extend APIOperations::NestedResource
8
8
 
9
- ACTIONS = %w[join mute unmute hold unhold speak play dial_participant update].freeze
9
+ ACTIONS = %w[join mute unmute hold unhold leave speak stop play dial_participant update record_pause record_resume].freeze
10
10
 
11
11
  ACTIONS.each do |action|
12
12
  nested_resource_class_methods action,
@@ -3,6 +3,11 @@
3
3
  module Telnyx
4
4
  class Connection < APIResource
5
5
  extend Telnyx::APIOperations::List
6
+ extend APIOperations::NestedResource
7
+ nested_resource_class_methods :active_calls,
8
+ path: ["active_calls"],
9
+ operations: %i[list],
10
+ instance_methods: { list: "active_calls" }
6
11
 
7
12
  OBJECT_NAME = "connection".freeze
8
13
  end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class CsvDownload < APIResource
5
+ extend Telnyx::APIOperations::List
6
+ extend Telnyx::APIOperations::Create
7
+
8
+ OBJECT_NAME = "phone_numbers/csv_download".freeze
9
+ end
10
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class CustomStorageCredential < APIResource
5
+ OBJECT_NAME = "custom_storage_credential".freeze
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class DetailRecord < APIResource
5
+ extend APIOperations::List
6
+
7
+ OBJECT_NAME = "detail_record".freeze
8
+ end
9
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class DialogflowConnection < APIResource
5
+ extend Telnyx::APIOperations::Create
6
+ include Telnyx::APIOperations::Delete
7
+ include Telnyx::APIOperations::Save
8
+
9
+ OBJECT_NAME = "dialogflow_connection".freeze
10
+ def self.create(params = {}, opts = {})
11
+ if opts.respond_to? :fetch
12
+ url = opts.fetch(:resource_url, nil)
13
+ opts.delete :resource_url
14
+ end
15
+ url ||= resource_url
16
+ resp, opts = request(:post, "#{url}/#{params[:connection_id]}", params, opts)
17
+ Util.convert_to_telnyx_object(resp.data, opts)
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class Documents < APIResource
5
+ extend Telnyx::APIOperations::List
6
+ extend Telnyx::APIOperations::Create
7
+ include Telnyx::APIOperations::Delete
8
+ include Telnyx::APIOperations::Save
9
+ extend APIOperations::NestedResource
10
+
11
+ ACTIONS = %w[download document_links].freeze
12
+ ACTIONS.each do |action|
13
+ nested_resource_class_methods action,
14
+ path: %W[#{action}],
15
+ operations: [:create],
16
+ instance_methods: { create: action }
17
+ end
18
+ OBJECT_NAME = "document".freeze
19
+ end
20
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class ManagedAccount < APIResource
5
+ extend Telnyx::APIOperations::List
6
+ extend Telnyx::APIOperations::Create
7
+ include Telnyx::APIOperations::Delete
8
+ include Telnyx::APIOperations::Save
9
+
10
+ OBJECT_NAME = "managed_account".freeze
11
+ end
12
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class DynamicEmergencyEndpoint < APIResource
5
+ extend Telnyx::APIOperations::List
6
+ extend Telnyx::APIOperations::Create
7
+ include Telnyx::APIOperations::Delete
8
+ include Telnyx::APIOperations::Save
9
+
10
+ OBJECT_NAME = "dynamic_emergency_endpoint".freeze
11
+ end
12
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class Embedding < APIResource
5
+ extend APIOperations::Create
6
+
7
+ def self.buckets(params = {}, opts = {})
8
+ resp, opts = request(:get, "/v2/ai/embeddings/buckets", params, opts)
9
+ Util.convert_to_telnyx_object(resp.data, opts)
10
+ end
11
+
12
+ OBJECT_NAME = "ai/embedding".freeze
13
+ end
14
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class Enum < APIResource
5
+ extend APIOperations::List
6
+ extend APIOperations::NestedResource
7
+
8
+ def self.endpoint(params = {}, opts = {})
9
+ resp, opts = request(:get, "/v2/enum/#{params[:endpoint]}", params, opts)
10
+ Util.convert_to_telnyx_object(resp.data, opts)
11
+ end
12
+
13
+ OBJECT_NAME = "enum".freeze
14
+ end
15
+ end
data/lib/telnyx/fax.rb CHANGED
@@ -6,8 +6,22 @@ module Telnyx
6
6
  extend Telnyx::APIOperations::Create
7
7
  include Telnyx::APIOperations::Delete
8
8
  include Telnyx::APIOperations::Save
9
+ extend APIOperations::NestedResource
10
+
11
+ ACTIONS = %w[refresh cancel].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
9
18
 
10
19
  OBJECT_NAME = "fax".freeze
11
20
  RESOURCE_PATH = "faxes".freeze
21
+ def self.retrieve(id, opts = {})
22
+ id, retrieve_params = Util.normalize_id(id)
23
+ resp, opts = request(:get, "#{resource_url}/#{CGI.escape(id)}", retrieve_params, opts)
24
+ Util.convert_to_telnyx_object(resp.data, opts)
25
+ end
12
26
  end
13
27
  end
@@ -0,0 +1,10 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class GlobalIp < APIResource
5
+ extend Telnyx::APIOperations::List
6
+ extend Telnyx::APIOperations::Create
7
+ include Telnyx::APIOperations::Delete
8
+ OBJECT_NAME = "global_ip".freeze
9
+ end
10
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class GlobalIpAllowedPort < APIResource
5
+ extend Telnyx::APIOperations::List
6
+ OBJECT_NAME = "global_ip_allowed_port".freeze
7
+ end
8
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class GlobalIpAssignment < APIResource
5
+ extend APIOperations::List
6
+ extend APIOperations::Create
7
+ include APIOperations::Delete
8
+ include APIOperations::Save
9
+
10
+ OBJECT_NAME = "global_ip_assignment".freeze
11
+ end
12
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class GlobalIpAssignmentHealth < APIResource
5
+ extend Telnyx::APIOperations::List
6
+ OBJECT_NAME = "global_ip_assignment_health".freeze
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class GlobalIpAssignmentUsage < APIResource
5
+ extend Telnyx::APIOperations::List
6
+ OBJECT_NAME = "global_ip_assignment_usage".freeze
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class GlobalIpLatency < APIResource
5
+ extend Telnyx::APIOperations::List
6
+ OBJECT_NAME = "global_ip_latency".freeze
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class GlobalIpProtocol < APIResource
5
+ extend Telnyx::APIOperations::List
6
+ OBJECT_NAME = "global_ip_protocol".freeze
7
+ end
8
+ end
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class GlobalIpUsage < APIResource
5
+ extend Telnyx::APIOperations::List
6
+ OBJECT_NAME = "global_ip_usage".freeze
7
+ end
8
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class Inference < APIResource
5
+ extend Telnyx::APIOperations::Create
6
+
7
+ OBJECT_NAME = "ai/generate".freeze
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class InventoryCoverage < APIResource
5
+ extend Telnyx::APIOperations::Create
6
+
7
+ OBJECT_NAME = "inventory_coverage".freeze
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class LedgerBillingGroupReport < APIResource
5
+ extend APIOperations::Create
6
+
7
+ OBJECT_NAME = "ledger_billing_group_report".freeze
8
+ end
9
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Telnyx
4
+ class ManagedAccount < APIResource
5
+ extend APIOperations::List
6
+ extend APIOperations::Create
7
+ extend APIOperations::NestedResource
8
+ include APIOperations::Delete
9
+ include APIOperations::Save
10
+
11
+ ACTIONS = %w[enable disable].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
+ nested_resource_class_methods "update_global_channel_limit",
19
+ path: "update_global_channel_limit",
20
+ operations: [:update],
21
+ instance_methods: { update: "update_global_channel_limit" }
22
+ def self.allocatable_global_outbound_channels(params = {}, opts = {})
23
+ resp, opts = request(:get, "/v2/managed_accounts/allocatable_global_outbound_channels", params, opts)
24
+ Util.convert_to_telnyx_object(resp.data, opts)
25
+ end
26
+
27
+ def update_global_channel_limit(opts)
28
+ self.class.update_update_global_channel_limit(id, nil, opts)
29
+ end
30
+ OBJECT_NAME = "managed_account".freeze
31
+ end
32
+ end