diff --git a/.env-example b/.env-example index 4fdb0df..59c5fb6 100644 --- a/.env-example +++ b/.env-example @@ -66,6 +66,15 @@ VONAGE_BRAND_NAME= # Vonage Account API variables VONAGE_SECRET_ID= +## Subaccounts + +START_DATE= +NEW_SUBACCOUNT_NAME= +NEW_SUBACCOUNT_SECRET= +SUBACCOUNT_KEY= +AMOUNT= +COUNTRY= + # Vonage Verify2 API variables REQUEST_ID= CODE= diff --git a/Gemfile b/Gemfile index a0c57e3..9ec994b 100644 --- a/Gemfile +++ b/Gemfile @@ -2,7 +2,7 @@ source 'https://rubygems.org' gem 'dotenv', '2.7.6' gem 'faye-websocket', '0.11.0' -gem 'vonage', '~> 7.2.1' +gem 'vonage', '~> 7.28' gem 'sinatra', '2.1.0' gem 'sinatra-contrib', '2.1.0' gem 'rack-contrib', '2.3.0' diff --git a/Gemfile.lock b/Gemfile.lock index d8eec6c..08ed918 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -2,7 +2,9 @@ GEM remote: https://rubygems.org/ specs: ast (2.4.0) + base64 (0.2.0) byebug (11.0.1) + connection_pool (2.4.1) daemons (1.3.1) dotenv (2.7.6) eventmachine (1.2.7) @@ -10,21 +12,25 @@ GEM eventmachine (>= 0.12.0) websocket-driver (>= 0.5.1) jaro_winkler (1.5.3) - jwt (2.2.2) + jwt (2.9.3) + base64 multi_json (1.15.0) + multipart-post (2.4.1) mustermann (1.1.1) ruby2_keywords (~> 0.0.1) - nexmo-jwt (0.1.2) - jwt (~> 2) + net-http-persistent (4.0.4) + connection_pool (~> 2.2) parallel (1.17.0) parser (2.6.3.0) ast (~> 2.4.0) + phonelib (0.9.3) rack (2.2.3) rack-contrib (2.3.0) rack (~> 2.0) rack-protection (2.1.0) rack rainbow (3.0.0) + rexml (3.3.9) rubocop (0.72.0) jaro_winkler (~> 1.5.1) parallel (~> 1.10) @@ -45,21 +51,27 @@ GEM rack-protection (= 2.1.0) sinatra (= 2.1.0) tilt (~> 2.0) - sorbet-runtime (0.5.6281) + sorbet-runtime (0.5.11625) thin (1.8.0) daemons (~> 1.0, >= 1.0.9) eventmachine (~> 1.0, >= 1.0.4) rack (>= 1, < 3) tilt (2.0.10) unicode-display_width (1.6.0) - vonage (7.2.1) - nexmo-jwt (~> 0.1.2) + vonage (7.28.0) + multipart-post (~> 2.0) + net-http-persistent (~> 4.0, >= 4.0.2) + phonelib + rexml sorbet-runtime (~> 0.5) + vonage-jwt (~> 0.2.0) zeitwerk (~> 2, >= 2.2) + vonage-jwt (0.2.0) + jwt (~> 2) websocket-driver (0.7.3) websocket-extensions (>= 0.1.0) websocket-extensions (0.1.5) - zeitwerk (2.4.2) + zeitwerk (2.7.1) PLATFORMS ruby @@ -73,7 +85,7 @@ DEPENDENCIES sinatra (= 2.1.0) sinatra-contrib (= 2.1.0) thin (= 1.8.0) - vonage (~> 7.2.1) + vonage (~> 7.28) BUNDLED WITH 2.2.3 diff --git a/subaccounts/create-subaccount.rb b/subaccounts/create-subaccount.rb new file mode 100644 index 0000000..7ca4aab --- /dev/null +++ b/subaccounts/create-subaccount.rb @@ -0,0 +1,17 @@ +require 'dotenv/load' +require 'vonage' + +VONAGE_API_KEY = ENV['VONAGE_API_KEY'] +VONAGE_API_SECRET = ENV['VONAGE_API_SECRET'] +NEW_SUBACCOUNT_NAME = ENV['NEW_SUBACCOUNT_NAME'] +NEW_SUBACCOUNT_SECRET = ENV['NEW_SUBACCOUNT_SECRET'] + +client = Vonage::Client.new( + api_key: VONAGE_API_KEY, + api_secret: VONAGE_API_SECRET +) + +client.subaccounts.create( + name: NEW_SUBACCOUNT_NAME, + secret: NEW_SUBACCOUNT_SECRET +) diff --git a/subaccounts/find-subaccount.rb b/subaccounts/find-subaccount.rb new file mode 100644 index 0000000..9be52d9 --- /dev/null +++ b/subaccounts/find-subaccount.rb @@ -0,0 +1,13 @@ +require 'dotenv/load' +require 'vonage' + +VONAGE_API_KEY = ENV['VONAGE_API_KEY'] +VONAGE_API_SECRET = ENV['VONAGE_API_SECRET'] +SUBACCOUNT_KEY = ENV['SUBACCOUNT_KEY'] + +client = Vonage::Client.new( + api_key: VONAGE_API_KEY, + api_secret: VONAGE_API_SECRET +) + +subaccount = client.subaccounts.find(subaccount_key: SUBACCOUNT_KEY) diff --git a/subaccounts/list-balance-transfers.rb b/subaccounts/list-balance-transfers.rb new file mode 100644 index 0000000..644d9d4 --- /dev/null +++ b/subaccounts/list-balance-transfers.rb @@ -0,0 +1,13 @@ +require 'dotenv/load' +require 'vonage' + +VONAGE_API_KEY = ENV['VONAGE_API_KEY'] +VONAGE_API_SECRET = ENV['VONAGE_API_SECRET'] +START_DATE = ENV['START_DATE'] + +client = Vonage::Client.new( + api_key: VONAGE_API_KEY, + api_secret: VONAGE_API_SECRET +) + +balance_transfers_list = client.subaccounts.list_balance_transfers(start_date: START_DATE) diff --git a/subaccounts/list-credit-transfers.rb b/subaccounts/list-credit-transfers.rb new file mode 100644 index 0000000..d418c8c --- /dev/null +++ b/subaccounts/list-credit-transfers.rb @@ -0,0 +1,13 @@ +require 'dotenv/load' +require 'vonage' + +VONAGE_API_KEY = ENV['VONAGE_API_KEY'] +VONAGE_API_SECRET = ENV['VONAGE_API_SECRET'] +START_DATE = ENV['START_DATE'] + +client = Vonage::Client.new( + api_key: VONAGE_API_KEY, + api_secret: VONAGE_API_SECRET +) + +credit_transfers_list = client.subaccounts.list_credit_transfers(start_date: START_DATE) diff --git a/subaccounts/list-subaccounts.rb b/subaccounts/list-subaccounts.rb new file mode 100644 index 0000000..9baba50 --- /dev/null +++ b/subaccounts/list-subaccounts.rb @@ -0,0 +1,12 @@ +require 'dotenv/load' +require 'vonage' + +VONAGE_API_KEY = ENV['VONAGE_API_KEY'] +VONAGE_API_SECRET = ENV['VONAGE_API_SECRET'] + +client = Vonage::Client.new( + api_key: VONAGE_API_KEY, + api_secret: VONAGE_API_SECRET +) + +subaccounts_list = client.subaccounts.list diff --git a/subaccounts/reactivate-subaccount.rb b/subaccounts/reactivate-subaccount.rb new file mode 100644 index 0000000..a2e4943 --- /dev/null +++ b/subaccounts/reactivate-subaccount.rb @@ -0,0 +1,16 @@ +require 'dotenv/load' +require 'vonage' + +VONAGE_API_KEY = ENV['VONAGE_API_KEY'] +VONAGE_API_SECRET = ENV['VONAGE_API_SECRET'] +SUBACCOUNT_KEY = ENV['SUBACCOUNT_KEY'] + +client = Vonage::Client.new( + api_key: VONAGE_API_KEY, + api_secret: VONAGE_API_SECRET +) + +client.subaccounts.update( + subaccount_key: SUBACCOUNT_KEY, + suspended: false +) diff --git a/subaccounts/suspend-subaccount.rb b/subaccounts/suspend-subaccount.rb new file mode 100644 index 0000000..7c4254a --- /dev/null +++ b/subaccounts/suspend-subaccount.rb @@ -0,0 +1,16 @@ +require 'dotenv/load' +require 'vonage' + +VONAGE_API_KEY = ENV['VONAGE_API_KEY'] +VONAGE_API_SECRET = ENV['VONAGE_API_SECRET'] +SUBACCOUNT_KEY = ENV['SUBACCOUNT_KEY'] + +client = Vonage::Client.new( + api_key: VONAGE_API_KEY, + api_secret: VONAGE_API_SECRET +) + +client.subaccounts.update( + subaccount_key: SUBACCOUNT_KEY, + suspended: true +) diff --git a/subaccounts/transfer-balance.rb b/subaccounts/transfer-balance.rb new file mode 100644 index 0000000..b282ee4 --- /dev/null +++ b/subaccounts/transfer-balance.rb @@ -0,0 +1,18 @@ +require 'dotenv/load' +require 'vonage' + +VONAGE_API_KEY = ENV['VONAGE_API_KEY'] +VONAGE_API_SECRET = ENV['VONAGE_API_SECRET'] +SUBACCOUNT_KEY = ENV['SUBACCOUNT_KEY'] +AMOUNT = ENV['AMOUNT'].to_f + +client = Vonage::Client.new( + api_key: VONAGE_API_KEY, + api_secret: VONAGE_API_SECRET +) + +client.subaccounts.transfer_balance( + from: VONAGE_API_KEY, + to: SUBACCOUNT_KEY, + amount: AMOUNT +) diff --git a/subaccounts/transfer-credit.rb b/subaccounts/transfer-credit.rb new file mode 100644 index 0000000..72b3cb5 --- /dev/null +++ b/subaccounts/transfer-credit.rb @@ -0,0 +1,18 @@ +require 'dotenv/load' +require 'vonage' + +VONAGE_API_KEY = ENV['VONAGE_API_KEY'] +VONAGE_API_SECRET = ENV['VONAGE_API_SECRET'] +SUBACCOUNT_KEY = ENV['SUBACCOUNT_KEY'] +AMOUNT = ENV['AMOUNT'].to_f + +client = Vonage::Client.new( + api_key: VONAGE_API_KEY, + api_secret: VONAGE_API_SECRET +) + +client.subaccounts.transfer_credit( + from: VONAGE_API_KEY, + to: SUBACCOUNT_KEY, + amount: AMOUNT +) diff --git a/subaccounts/transfer-number.rb b/subaccounts/transfer-number.rb new file mode 100644 index 0000000..fefa6ee --- /dev/null +++ b/subaccounts/transfer-number.rb @@ -0,0 +1,20 @@ +require 'dotenv/load' +require 'vonage' + +VONAGE_API_KEY = ENV['VONAGE_API_KEY'] +VONAGE_API_SECRET = ENV['VONAGE_API_SECRET'] +SUBACCOUNT_KEY = ENV['SUBACCOUNT_KEY'] +VONAGE_NUMBER = ENV['VONAGE_NUMBER'] +COUNTRY = ENV['COUNTRY'] + +client = Vonage::Client.new( + api_key: VONAGE_API_KEY, + api_secret: VONAGE_API_SECRET +) + +client.subaccounts.transfer_number( + from: VONAGE_API_KEY, + to: SUBACCOUNT_KEY, + number: VONAGE_NUMBER, + country: COUNTRY +)