wavix-sdk-ruby 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.md +124 -0
- data/lib/middleware/follow_redirects_middleware.rb +15 -0
- data/lib/services/fields_validator.rb +26 -0
- data/lib/wavix-sdk-ruby.rb +5 -0
- data/lib/wavix_api/base_methods.rb +180 -0
- data/lib/wavix_api/v1/base_destroy.rb +31 -0
- data/lib/wavix_api/v1/base_find.rb +31 -0
- data/lib/wavix_api/v1/base_search.rb +31 -0
- data/lib/wavix_api/v1/billing/invoices/find.rb +44 -0
- data/lib/wavix_api/v1/billing/invoices/search.rb +21 -0
- data/lib/wavix_api/v1/billing/transactions/search.rb +39 -0
- data/lib/wavix_api/v1/buy/carts/checkout.rb +23 -0
- data/lib/wavix_api/v1/buy/carts/find.rb +23 -0
- data/lib/wavix_api/v1/buy/carts/update.rb +34 -0
- data/lib/wavix_api/v1/buy/cities/search.rb +47 -0
- data/lib/wavix_api/v1/buy/countries/search.rb +31 -0
- data/lib/wavix_api/v1/buy/dids/search.rb +41 -0
- data/lib/wavix_api/v1/buy/regions/search.rb +33 -0
- data/lib/wavix_api/v1/call/recordings/destroy.rb +23 -0
- data/lib/wavix_api/v1/call/recordings/month_statistics/details.rb +35 -0
- data/lib/wavix_api/v1/call/recordings/month_statistics/search.rb +35 -0
- data/lib/wavix_api/v1/call/recordings/recording_settings.rb +40 -0
- data/lib/wavix_api/v1/call/recordings/retention_policy.rb +23 -0
- data/lib/wavix_api/v1/call/recordings/search.rb +55 -0
- data/lib/wavix_api/v1/call/recordings/update_recording_settings.rb +48 -0
- data/lib/wavix_api/v1/call/recordings/update_retention_policy.rb +37 -0
- data/lib/wavix_api/v1/call/transcriptions/find.rb +31 -0
- data/lib/wavix_api/v1/call/transcriptions/retranscribe.rb +35 -0
- data/lib/wavix_api/v1/cdrs/advanced_search.rb +67 -0
- data/lib/wavix_api/v1/cdrs/common_vars.rb +22 -0
- data/lib/wavix_api/v1/cdrs/metrics.rb +29 -0
- data/lib/wavix_api/v1/cdrs/search.rb +35 -0
- data/lib/wavix_api/v1/e911_records/create.rb +47 -0
- data/lib/wavix_api/v1/e911_records/destroy.rb +31 -0
- data/lib/wavix_api/v1/e911_records/search.rb +33 -0
- data/lib/wavix_api/v1/e911_records/validate_address.rb +44 -0
- data/lib/wavix_api/v1/mydids/cities.rb +32 -0
- data/lib/wavix_api/v1/mydids/destroy.rb +55 -0
- data/lib/wavix_api/v1/mydids/find.rb +21 -0
- data/lib/wavix_api/v1/mydids/search.rb +35 -0
- data/lib/wavix_api/v1/mydids/update.rb +40 -0
- data/lib/wavix_api/v1/mydids/update_destinations.rb +73 -0
- data/lib/wavix_api/v1/mydids/update_sms_enabled.rb +32 -0
- data/lib/wavix_api/v1/papers/create.rb +65 -0
- data/lib/wavix_api/v1/papers/find.rb +42 -0
- data/lib/wavix_api/v1/profile/account_config.rb +21 -0
- data/lib/wavix_api/v1/profile/find.rb +21 -0
- data/lib/wavix_api/v1/profile/update.rb +58 -0
- data/lib/wavix_api/v1/sub_organizations/create.rb +36 -0
- data/lib/wavix_api/v1/sub_organizations/find.rb +19 -0
- data/lib/wavix_api/v1/sub_organizations/search.rb +31 -0
- data/lib/wavix_api/v1/sub_organizations/transactions.rb +39 -0
- data/lib/wavix_api/v1/sub_organizations/update.rb +40 -0
- data/lib/wavix_api/v1/trunks/create.rb +76 -0
- data/lib/wavix_api/v1/trunks/destroy.rb +19 -0
- data/lib/wavix_api/v1/trunks/find.rb +19 -0
- data/lib/wavix_api/v1/trunks/search.rb +30 -0
- data/lib/wavix_api/v1/trunks/update.rb +85 -0
- data/lib/wavix_api/v1/voice_campaigns/create.rb +39 -0
- data/lib/wavix_api/v1/voice_campaigns/find.rb +21 -0
- data/lib/wavix_api/v2/base_destroy.rb +10 -0
- data/lib/wavix_api/v2/base_find.rb +10 -0
- data/lib/wavix_api/v2/base_search.rb +10 -0
- data/lib/wavix_api/v2/messages/all.rb +23 -0
- data/lib/wavix_api/v2/messages/async_create.rb +23 -0
- data/lib/wavix_api/v2/messages/attachments/find.rb +59 -0
- data/lib/wavix_api/v2/messages/common_vars.rb +50 -0
- data/lib/wavix_api/v2/messages/create.rb +24 -0
- data/lib/wavix_api/v2/messages/find.rb +19 -0
- data/lib/wavix_api/v2/messages/opt_outs/create.rb +34 -0
- data/lib/wavix_api/v2/messages/search.rb +23 -0
- data/lib/wavix_api/v2/messages/sender_ids/create.rb +40 -0
- data/lib/wavix_api/v2/messages/sender_ids/destroy.rb +21 -0
- data/lib/wavix_api/v2/messages/sender_ids/find.rb +21 -0
- data/lib/wavix_api/v2/messages/sender_ids/restrictions.rb +32 -0
- data/lib/wavix_api/v2/messages/sender_ids/search.rb +21 -0
- data/lib/wavix_api/v3/messages/sender_ids/create.rb +51 -0
- data/lib/wavix_api/v3/messages/sender_ids/find.rb +21 -0
- data/lib/wavix_api/v3/messages/sender_ids/search.rb +21 -0
- data/lib/wavix_api.rb +155 -0
- data/wavix-sdk-ruby.gemspec +40 -0
- metadata +204 -0
@@ -0,0 +1,47 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WavixApi
|
4
|
+
module V1
|
5
|
+
module Buy
|
6
|
+
module Cities
|
7
|
+
class Search
|
8
|
+
include WavixApi::BaseMethods
|
9
|
+
|
10
|
+
@params_schema = {
|
11
|
+
type: 'object',
|
12
|
+
properties: {
|
13
|
+
country_id: { type: 'integer' }.freeze,
|
14
|
+
region_id: { type: 'integer' }.freeze,
|
15
|
+
type_filter: { type: 'string' }.freeze,
|
16
|
+
text_enabled_only: { type: 'boolean' }.freeze
|
17
|
+
}.freeze,
|
18
|
+
required: %i[country_id].freeze
|
19
|
+
}.freeze
|
20
|
+
|
21
|
+
class << self
|
22
|
+
def call(params = {})
|
23
|
+
instance = new(params)
|
24
|
+
|
25
|
+
instance.validate!
|
26
|
+
|
27
|
+
instance.get(path(instance.params))
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
def path(params)
|
33
|
+
country_id = params[:country_id]
|
34
|
+
region_id = params[:region_id]
|
35
|
+
|
36
|
+
if region_id.nil?
|
37
|
+
"v1/buy/countries/#{country_id}/cities"
|
38
|
+
else
|
39
|
+
"v1/buy/countries/#{country_id}/regions/#{region_id}/cities"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WavixApi
|
4
|
+
module V1
|
5
|
+
module Buy
|
6
|
+
module Countries
|
7
|
+
class Search
|
8
|
+
include WavixApi::BaseMethods
|
9
|
+
|
10
|
+
@params_schema = {
|
11
|
+
type: 'object',
|
12
|
+
properties: {
|
13
|
+
type_filter: { type: 'string' }.freeze,
|
14
|
+
text_enabled_only: { type: 'boolean' }.freeze
|
15
|
+
}.freeze
|
16
|
+
}.freeze
|
17
|
+
|
18
|
+
class << self
|
19
|
+
def call(params = {})
|
20
|
+
instance = new(params)
|
21
|
+
|
22
|
+
instance.validate!
|
23
|
+
|
24
|
+
instance.get('v1/buy/countries')
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WavixApi
|
4
|
+
module V1
|
5
|
+
module Buy
|
6
|
+
module Dids
|
7
|
+
class Search
|
8
|
+
include WavixApi::BaseMethods
|
9
|
+
|
10
|
+
@params_schema = {
|
11
|
+
type: 'object',
|
12
|
+
properties: {
|
13
|
+
country_id: { type: 'integer' }.freeze,
|
14
|
+
city_id: { type: 'integer' }.freeze,
|
15
|
+
type_filter: { type: 'string' }.freeze,
|
16
|
+
text_enabled_only: { type: 'boolean' }.freeze,
|
17
|
+
**::WavixApi::BaseMethods::PAGINATION_SCHEMA
|
18
|
+
}.freeze,
|
19
|
+
required: %i[country_id city_id].freeze
|
20
|
+
}.freeze
|
21
|
+
|
22
|
+
class << self
|
23
|
+
def call(params = {})
|
24
|
+
instance = new(params)
|
25
|
+
|
26
|
+
instance.validate!
|
27
|
+
|
28
|
+
instance.get(path(instance.params))
|
29
|
+
end
|
30
|
+
|
31
|
+
private
|
32
|
+
|
33
|
+
def path(params)
|
34
|
+
"v1/buy/countries/#{params[:country_id]}/cities/#{params[:city_id]}/dids"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WavixApi
|
4
|
+
module V1
|
5
|
+
module Buy
|
6
|
+
module Regions
|
7
|
+
class Search
|
8
|
+
include WavixApi::BaseMethods
|
9
|
+
|
10
|
+
@params_schema = {
|
11
|
+
type: 'object',
|
12
|
+
properties: {
|
13
|
+
country_id: { type: 'integer' }.freeze,
|
14
|
+
type_filter: { type: 'string' }.freeze,
|
15
|
+
text_enabled_only: { type: 'boolean' }.freeze
|
16
|
+
}.freeze,
|
17
|
+
required: %i[country_id].freeze
|
18
|
+
}.freeze
|
19
|
+
|
20
|
+
class << self
|
21
|
+
def call(params = {})
|
22
|
+
instance = new(params)
|
23
|
+
|
24
|
+
instance.validate!
|
25
|
+
|
26
|
+
instance.get("v1/buy/countries/#{instance.params[:country_id]}/regions")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'wavix_api'
|
4
|
+
|
5
|
+
module WavixApi
|
6
|
+
module V1
|
7
|
+
module Call
|
8
|
+
module Recordings
|
9
|
+
class Destroy < ::WavixApi::V1::BaseDestroy
|
10
|
+
@params_schema = ::WavixApi::BaseMethods::ONLY_ID_SCHEMA
|
11
|
+
|
12
|
+
class << self
|
13
|
+
private
|
14
|
+
|
15
|
+
def path
|
16
|
+
'v1/recordings'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'wavix_api'
|
4
|
+
|
5
|
+
module WavixApi
|
6
|
+
module V1
|
7
|
+
module Call
|
8
|
+
module Recordings
|
9
|
+
module MonthStatistics
|
10
|
+
class Details
|
11
|
+
include WavixApi::BaseMethods
|
12
|
+
|
13
|
+
@params_schema = ::WavixApi::BaseMethods::ONLY_ID_SCHEMA
|
14
|
+
|
15
|
+
class << self
|
16
|
+
def call(id = nil)
|
17
|
+
instance = new({ id: id })
|
18
|
+
|
19
|
+
instance.validate!
|
20
|
+
|
21
|
+
instance.get(
|
22
|
+
['v1/recording/month-statistics', instance.id, 'details'].join('/')
|
23
|
+
)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def call
|
28
|
+
self.class.call(id)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'wavix_api'
|
4
|
+
|
5
|
+
module WavixApi
|
6
|
+
module V1
|
7
|
+
module Call
|
8
|
+
module Recordings
|
9
|
+
module MonthStatistics
|
10
|
+
class Search
|
11
|
+
include WavixApi::BaseMethods
|
12
|
+
|
13
|
+
@params_schema = {
|
14
|
+
type: 'object',
|
15
|
+
properties: {
|
16
|
+
year: { type: 'integer' }.freeze,
|
17
|
+
month: { type: 'integer' }.freeze
|
18
|
+
}.freeze
|
19
|
+
}.freeze
|
20
|
+
|
21
|
+
class << self
|
22
|
+
def call(params = {})
|
23
|
+
instance = new(params)
|
24
|
+
|
25
|
+
instance.validate!
|
26
|
+
|
27
|
+
instance.get('v1/recording/month-statistics')
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WavixApi
|
4
|
+
module V1
|
5
|
+
module Call
|
6
|
+
module Recordings
|
7
|
+
class RecordingSettings
|
8
|
+
include WavixApi::BaseMethods
|
9
|
+
|
10
|
+
@params_schema = {
|
11
|
+
type: 'object',
|
12
|
+
properties: {
|
13
|
+
sip_trunks: {
|
14
|
+
type: 'array',
|
15
|
+
items: { type: 'string' }.freeze
|
16
|
+
}.freeze,
|
17
|
+
dids: {
|
18
|
+
type: 'array',
|
19
|
+
items: {
|
20
|
+
type: 'string',
|
21
|
+
pattern: ::WavixApi::BaseMethods::ONLY_DIGITS_REGEXP
|
22
|
+
}.freeze
|
23
|
+
}.freeze
|
24
|
+
}.freeze
|
25
|
+
}.freeze
|
26
|
+
|
27
|
+
class << self
|
28
|
+
def call(params = {})
|
29
|
+
instance = new(params)
|
30
|
+
|
31
|
+
instance.validate!
|
32
|
+
|
33
|
+
instance.get('v1/recordings/recording-settings')
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WavixApi
|
4
|
+
module V1
|
5
|
+
module Call
|
6
|
+
module Recordings
|
7
|
+
class RetentionPolicy
|
8
|
+
include WavixApi::BaseMethods
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def call(params = {})
|
12
|
+
instance = new(params)
|
13
|
+
|
14
|
+
instance.validate!
|
15
|
+
|
16
|
+
instance.get('v1/recordings/retention-policy')
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WavixApi
|
4
|
+
module V1
|
5
|
+
module Call
|
6
|
+
module Recordings
|
7
|
+
class Search
|
8
|
+
include WavixApi::BaseMethods
|
9
|
+
|
10
|
+
DATE_FIELDS = %i[from_date to_date].freeze
|
11
|
+
DATETIME_FIELDS = %i[from_time to_time].freeze
|
12
|
+
DATE_FORMAT = '%Y.%m.%d'
|
13
|
+
DATETIME_FORMAT = '%Y.%m.%dTT%H:%M:%S.000'
|
14
|
+
|
15
|
+
@params_schema = {
|
16
|
+
type: 'object',
|
17
|
+
properties: {
|
18
|
+
from: { type: 'string', pattern: ::WavixApi::BaseMethods::ONLY_DIGITS_REGEXP }.freeze,
|
19
|
+
to: { type: 'string', pattern: ::WavixApi::BaseMethods::ONLY_DIGITS_REGEXP }.freeze,
|
20
|
+
call_uuid: { type: 'string' }.freeze,
|
21
|
+
sip_trunks: {
|
22
|
+
type: 'array',
|
23
|
+
items: { type: 'string' }.freeze
|
24
|
+
}.freeze,
|
25
|
+
dids: {
|
26
|
+
type: 'array',
|
27
|
+
items: {
|
28
|
+
type: 'string',
|
29
|
+
pattern: ::WavixApi::BaseMethods::ONLY_DIGITS_REGEXP
|
30
|
+
}.freeze
|
31
|
+
}.freeze
|
32
|
+
}.freeze
|
33
|
+
}.freeze
|
34
|
+
|
35
|
+
class << self
|
36
|
+
def call(params = {})
|
37
|
+
instance = new(params)
|
38
|
+
|
39
|
+
instance.validate!
|
40
|
+
instance.validate_dates!(DATE_FIELDS + DATETIME_FIELDS)
|
41
|
+
|
42
|
+
instance.stringify_dates!(
|
43
|
+
instance.params, fields: DATE_FIELDS, format: DATE_FORMAT
|
44
|
+
)
|
45
|
+
instance.stringify_dates!(
|
46
|
+
instance.params, fields: DATETIME_FIELDS, format: DATETIME_FORMAT
|
47
|
+
)
|
48
|
+
instance.get('v1/recordings')
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WavixApi
|
4
|
+
module V1
|
5
|
+
module Call
|
6
|
+
module Recordings
|
7
|
+
class UpdateRecordingSettings
|
8
|
+
include WavixApi::BaseMethods
|
9
|
+
|
10
|
+
@params_schema = {
|
11
|
+
type: 'object',
|
12
|
+
properties: {
|
13
|
+
recording: {
|
14
|
+
type: 'object',
|
15
|
+
properties: {
|
16
|
+
new_state: { type: 'boolean' },
|
17
|
+
sip_trunks: {
|
18
|
+
type: 'array',
|
19
|
+
items: { type: 'string' }.freeze
|
20
|
+
}.freeze,
|
21
|
+
dids: {
|
22
|
+
type: 'array',
|
23
|
+
items: {
|
24
|
+
type: 'string',
|
25
|
+
pattern: ::WavixApi::BaseMethods::ONLY_DIGITS_REGEXP
|
26
|
+
}.freeze
|
27
|
+
}.freeze
|
28
|
+
}.freeze,
|
29
|
+
required: %i[new_state].freeze
|
30
|
+
}.freeze
|
31
|
+
}.freeze,
|
32
|
+
required: %i[recording].freeze
|
33
|
+
}.freeze
|
34
|
+
|
35
|
+
class << self
|
36
|
+
def call(params = {})
|
37
|
+
instance = new(params)
|
38
|
+
|
39
|
+
instance.validate!
|
40
|
+
|
41
|
+
instance.put('v1/recordings/recording-settings')
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WavixApi
|
4
|
+
module V1
|
5
|
+
module Call
|
6
|
+
module Recordings
|
7
|
+
class UpdateRetentionPolicy
|
8
|
+
include WavixApi::BaseMethods
|
9
|
+
|
10
|
+
@params_schema = {
|
11
|
+
type: 'object',
|
12
|
+
properties: {
|
13
|
+
settings: {
|
14
|
+
type: 'object',
|
15
|
+
properties: {
|
16
|
+
recording_store_months: { type: 'integer' }.freeze
|
17
|
+
}.freeze,
|
18
|
+
required: %i[recording_store_months].freeze
|
19
|
+
}.freeze
|
20
|
+
}.freeze,
|
21
|
+
required: %i[settings].freeze
|
22
|
+
}.freeze
|
23
|
+
|
24
|
+
class << self
|
25
|
+
def call(params = {})
|
26
|
+
instance = new(params)
|
27
|
+
|
28
|
+
instance.validate!
|
29
|
+
|
30
|
+
instance.patch('v1/recordings/retention-policy')
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WavixApi
|
4
|
+
module V1
|
5
|
+
module Call
|
6
|
+
module Transcriptions
|
7
|
+
class Find
|
8
|
+
include WavixApi::BaseMethods
|
9
|
+
|
10
|
+
@params_schema = {
|
11
|
+
type: 'object',
|
12
|
+
properties: {
|
13
|
+
cdr_id: { type: 'string' }
|
14
|
+
}.freeze,
|
15
|
+
required: %i[cdr_id].freeze
|
16
|
+
}.freeze
|
17
|
+
|
18
|
+
class << self
|
19
|
+
def call(params = {})
|
20
|
+
instance = new(params)
|
21
|
+
|
22
|
+
instance.validate!
|
23
|
+
|
24
|
+
instance.get("v1/cdr/#{instance.params[:cdr_id]}/transcription")
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WavixApi
|
4
|
+
module V1
|
5
|
+
module Call
|
6
|
+
module Transcriptions
|
7
|
+
class Retranscribe
|
8
|
+
include WavixApi::BaseMethods
|
9
|
+
|
10
|
+
@params_schema = {
|
11
|
+
type: 'object',
|
12
|
+
properties: {
|
13
|
+
cdr_id: { type: 'string' }.freeze,
|
14
|
+
language: {
|
15
|
+
enum: WavixApi::BaseMethods::AVAILABLE_TRANSCRIPTION_LANGUAGES
|
16
|
+
}.freeze,
|
17
|
+
webhook_url: { type: 'string' }.freeze
|
18
|
+
}.freeze,
|
19
|
+
required: %i[cdr_id language webhook_url].freeze
|
20
|
+
}.freeze
|
21
|
+
|
22
|
+
class << self
|
23
|
+
def call(params = {})
|
24
|
+
instance = new(params)
|
25
|
+
|
26
|
+
instance.validate!
|
27
|
+
|
28
|
+
instance.put("v1/cdr/#{instance.params[:cdr_id]}/retranscribe")
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'wavix_api'
|
4
|
+
require_relative 'common_vars'
|
5
|
+
|
6
|
+
module WavixApi
|
7
|
+
module V1
|
8
|
+
module Cdrs
|
9
|
+
class AdvancedSearch
|
10
|
+
include WavixApi::V1::Cdrs::CommonVars
|
11
|
+
include WavixApi::BaseMethods
|
12
|
+
|
13
|
+
TRANSCRIPTION_SPEAKER_SCHEMA = {
|
14
|
+
type: 'object',
|
15
|
+
properties: {
|
16
|
+
must: {
|
17
|
+
type: 'array',
|
18
|
+
items: { type: 'string' }.freeze
|
19
|
+
}.freeze,
|
20
|
+
match: {
|
21
|
+
type: 'array',
|
22
|
+
items: { type: 'string' }.freeze
|
23
|
+
}.freeze,
|
24
|
+
exclude: {
|
25
|
+
type: 'array',
|
26
|
+
items: { type: 'string' }.freeze
|
27
|
+
}.freeze
|
28
|
+
}.freeze
|
29
|
+
}.freeze
|
30
|
+
|
31
|
+
@params_schema = {
|
32
|
+
type: 'object',
|
33
|
+
properties: ::WavixApi::V1::Cdrs::CommonVars::CDR_FIELDS_SCHEMA.merge(
|
34
|
+
{
|
35
|
+
transcription: {
|
36
|
+
type: 'object',
|
37
|
+
properties: {
|
38
|
+
language: { type: 'string' },
|
39
|
+
status: { type: 'string' },
|
40
|
+
properties: {
|
41
|
+
agent: TRANSCRIPTION_SPEAKER_SCHEMA,
|
42
|
+
lead: TRANSCRIPTION_SPEAKER_SCHEMA,
|
43
|
+
any: TRANSCRIPTION_SPEAKER_SCHEMA
|
44
|
+
}.freeze
|
45
|
+
}.freeze
|
46
|
+
}.freeze
|
47
|
+
}
|
48
|
+
),
|
49
|
+
required: ::WavixApi::V1::Cdrs::CommonVars::CDR_REQUIRED_FIELDS
|
50
|
+
}.freeze
|
51
|
+
|
52
|
+
class << self
|
53
|
+
def call(params = {})
|
54
|
+
instance = new(params)
|
55
|
+
|
56
|
+
instance.validate!
|
57
|
+
instance.validate_dates!(::WavixApi::V1::Cdrs::CommonVars::DATE_FIELDS)
|
58
|
+
|
59
|
+
instance.stringify_dates!(instance.params,
|
60
|
+
fields: ::WavixApi::V1::Cdrs::CommonVars::DATE_FIELDS)
|
61
|
+
instance.post('v1/cdr')
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module WavixApi
|
4
|
+
module V1
|
5
|
+
module Cdrs
|
6
|
+
module CommonVars
|
7
|
+
DATE_FIELDS = %i[from to].freeze
|
8
|
+
CDR_REQUIRED_FIELDS = DATE_FIELDS + %i[type]
|
9
|
+
CDR_FIELDS_SCHEMA = {
|
10
|
+
type: { enum: %w[placed received] }.freeze,
|
11
|
+
from_search: { type: 'string' }.freeze,
|
12
|
+
to_search: { type: 'string' }.freeze,
|
13
|
+
page: { type: 'integer' }.freeze,
|
14
|
+
per_page: { type: 'integer' }.freeze,
|
15
|
+
disposition: { type: 'string' }.freeze,
|
16
|
+
uuid: { type: 'string' }.freeze,
|
17
|
+
sip_trunk: { type: 'string' }.freeze
|
18
|
+
}.freeze
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'wavix_api'
|
4
|
+
|
5
|
+
module WavixApi
|
6
|
+
module V1
|
7
|
+
module Cdrs
|
8
|
+
class Metrics
|
9
|
+
include WavixApi::V1::Cdrs::CommonVars
|
10
|
+
include WavixApi::BaseMethods
|
11
|
+
|
12
|
+
class << self
|
13
|
+
def call(params = {})
|
14
|
+
instance = new(params)
|
15
|
+
|
16
|
+
instance.validate!
|
17
|
+
instance.validate_dates!(::WavixApi::V1::Cdrs::CommonVars::DATE_FIELDS)
|
18
|
+
|
19
|
+
instance.stringify_dates!(
|
20
|
+
instance.params,
|
21
|
+
fields: ::WavixApi::V1::Cdrs::CommonVars::DATE_FIELDS
|
22
|
+
)
|
23
|
+
instance.get('v1/cdr/metrics')
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'wavix_api'
|
4
|
+
require_relative 'common_vars'
|
5
|
+
|
6
|
+
module WavixApi
|
7
|
+
module V1
|
8
|
+
module Cdrs
|
9
|
+
class Search
|
10
|
+
include WavixApi::V1::Cdrs::CommonVars
|
11
|
+
include WavixApi::BaseMethods
|
12
|
+
|
13
|
+
@params_schema = {
|
14
|
+
type: 'object',
|
15
|
+
properties: ::WavixApi::V1::Cdrs::CommonVars::CDR_FIELDS_SCHEMA,
|
16
|
+
required: ::WavixApi::V1::Cdrs::CommonVars::CDR_REQUIRED_FIELDS
|
17
|
+
}.freeze
|
18
|
+
|
19
|
+
class << self
|
20
|
+
def call(params = {})
|
21
|
+
instance = new(params)
|
22
|
+
|
23
|
+
instance.validate!
|
24
|
+
instance.validate_dates!(::WavixApi::V1::Cdrs::CommonVars::DATE_FIELDS)
|
25
|
+
|
26
|
+
instance.stringify_dates!(
|
27
|
+
instance.params, fields: ::WavixApi::V1::Cdrs::CommonVars::DATE_FIELDS
|
28
|
+
)
|
29
|
+
instance.get('v1/cdr')
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|