zoom_rb 0.8.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (172) hide show
  1. checksums.yaml +7 -0
  2. data/.circleci/config.yml +64 -0
  3. data/.gitignore +19 -0
  4. data/.ruby-version +1 -0
  5. data/Gemfile +5 -0
  6. data/Gemfile.lock +91 -0
  7. data/LICENSE +22 -0
  8. data/Makefile +5 -0
  9. data/README.md +51 -0
  10. data/lib/zoom.rb +49 -0
  11. data/lib/zoom/actions/account.rb +93 -0
  12. data/lib/zoom/actions/group.rb +8 -0
  13. data/lib/zoom/actions/im/chat.rb +29 -0
  14. data/lib/zoom/actions/im/group.rb +10 -0
  15. data/lib/zoom/actions/m323_device.rb +8 -0
  16. data/lib/zoom/actions/meeting.rb +80 -0
  17. data/lib/zoom/actions/metrics.rb +29 -0
  18. data/lib/zoom/actions/recording.rb +35 -0
  19. data/lib/zoom/actions/report.rb +29 -0
  20. data/lib/zoom/actions/user.rb +146 -0
  21. data/lib/zoom/actions/webinar.rb +110 -0
  22. data/lib/zoom/client.rb +36 -0
  23. data/lib/zoom/defaults.rb +96 -0
  24. data/lib/zoom/error.rb +9 -0
  25. data/lib/zoom/interface.rb +6 -0
  26. data/lib/zoom/params.rb +64 -0
  27. data/lib/zoom/utils.rb +74 -0
  28. data/spec/fixtures/chat/get.json +16 -0
  29. data/spec/fixtures/chat/list.json +16 -0
  30. data/spec/fixtures/error/validation.json +10 -0
  31. data/spec/fixtures/mc_recording_list.json +51 -0
  32. data/spec/fixtures/meeting/create.json +24 -0
  33. data/spec/fixtures/meeting/delete.json +4 -0
  34. data/spec/fixtures/meeting/end.json +4 -0
  35. data/spec/fixtures/meeting/get.json +34 -0
  36. data/spec/fixtures/meeting/list.json +32 -0
  37. data/spec/fixtures/meeting/live.json +32 -0
  38. data/spec/fixtures/meeting/register.json +7 -0
  39. data/spec/fixtures/meeting/update.json +4 -0
  40. data/spec/fixtures/metrics_crc.json +105 -0
  41. data/spec/fixtures/metrics_meetingdetail.json +32 -0
  42. data/spec/fixtures/metrics_meetings.json +26 -0
  43. data/spec/fixtures/recording_delete.json +4 -0
  44. data/spec/fixtures/recording_get.json +37 -0
  45. data/spec/fixtures/recording_list.json +51 -0
  46. data/spec/fixtures/report/getaccountreport.json +23 -0
  47. data/spec/fixtures/report/getaudioreport.json +22 -0
  48. data/spec/fixtures/report/getdailyreport.json +13 -0
  49. data/spec/fixtures/report/getuserreport.json +24 -0
  50. data/spec/fixtures/report_getaccountreport.json +23 -0
  51. data/spec/fixtures/report_getdailyreport.json +83 -0
  52. data/spec/fixtures/report_getuserreport.json +24 -0
  53. data/spec/fixtures/user/assistant/delete.json +5 -0
  54. data/spec/fixtures/user/assistant/set.json +5 -0
  55. data/spec/fixtures/user/autocreate.json +51 -0
  56. data/spec/fixtures/user/autocreate2.json +51 -0
  57. data/spec/fixtures/user/create.json +7 -0
  58. data/spec/fixtures/user/custcreate.json +10 -0
  59. data/spec/fixtures/user/delete.json +0 -0
  60. data/spec/fixtures/user/get.json +23 -0
  61. data/spec/fixtures/user/getbyemail.json +8 -0
  62. data/spec/fixtures/user/list.json +23 -0
  63. data/spec/fixtures/user/pending.json +56 -0
  64. data/spec/fixtures/user/permanent_delete.json +4 -0
  65. data/spec/fixtures/user/update.json +0 -0
  66. data/spec/fixtures/webinar/create.json +29 -0
  67. data/spec/fixtures/webinar/delete.json +0 -0
  68. data/spec/fixtures/webinar/list.json +20 -0
  69. data/spec/fixtures/webinar/registrant/add.json +7 -0
  70. data/spec/fixtures/webinar/registrant/list.json +36 -0
  71. data/spec/fixtures/webinar/update.json +0 -0
  72. data/spec/fixtures/webinar_delete.json +4 -0
  73. data/spec/fixtures/webinar_end.json +4 -0
  74. data/spec/fixtures/webinar_get.json +17 -0
  75. data/spec/fixtures/webinar_update.json +4 -0
  76. data/spec/lib/zoom/actions/group/create_spec.rb +3 -0
  77. data/spec/lib/zoom/actions/group/delete_spec.rb +3 -0
  78. data/spec/lib/zoom/actions/group/edit_spec.rb +3 -0
  79. data/spec/lib/zoom/actions/group/get_spec.rb +3 -0
  80. data/spec/lib/zoom/actions/group/list_spec.rb +3 -0
  81. data/spec/lib/zoom/actions/group/member/add_spec.rb +3 -0
  82. data/spec/lib/zoom/actions/group/member/delete_spec.rb +3 -0
  83. data/spec/lib/zoom/actions/group/member/list_spec.rb +3 -0
  84. data/spec/lib/zoom/actions/im/chat/get_spec.rb +64 -0
  85. data/spec/lib/zoom/actions/im/chat/list_spec.rb +58 -0
  86. data/spec/lib/zoom/actions/im/group/create_spec.rb +3 -0
  87. data/spec/lib/zoom/actions/im/group/delete_spec.rb +3 -0
  88. data/spec/lib/zoom/actions/im/group/edit_spec.rb +3 -0
  89. data/spec/lib/zoom/actions/im/group/get_spec.rb +3 -0
  90. data/spec/lib/zoom/actions/im/group/list_spec.rb +3 -0
  91. data/spec/lib/zoom/actions/im/group/member/add_spec.rb +3 -0
  92. data/spec/lib/zoom/actions/im/group/member/delete_spec.rb +3 -0
  93. data/spec/lib/zoom/actions/im/group/member/list_spec.rb +3 -0
  94. data/spec/lib/zoom/actions/m323/device/create_spec.rb +3 -0
  95. data/spec/lib/zoom/actions/m323/device/delete_spec.rb +3 -0
  96. data/spec/lib/zoom/actions/m323/device/list_spec.rb +3 -0
  97. data/spec/lib/zoom/actions/m323/device/update_spec.rb +3 -0
  98. data/spec/lib/zoom/actions/ma/account/billing_update_spec.rb +3 -0
  99. data/spec/lib/zoom/actions/ma/account/create_spec.rb +3 -0
  100. data/spec/lib/zoom/actions/ma/account/delete_spec.rb +3 -0
  101. data/spec/lib/zoom/actions/ma/account/get_spec.rb +3 -0
  102. data/spec/lib/zoom/actions/ma/account/list_spec.rb +3 -0
  103. data/spec/lib/zoom/actions/ma/account/plan/add_spec.rb +0 -0
  104. data/spec/lib/zoom/actions/ma/account/plan/get_spec.rb +0 -0
  105. data/spec/lib/zoom/actions/ma/account/plan/subscribe_spec.rb +3 -0
  106. data/spec/lib/zoom/actions/ma/account/plan/update_spec.rb +3 -0
  107. data/spec/lib/zoom/actions/meeting/create_spec.rb +66 -0
  108. data/spec/lib/zoom/actions/meeting/delete_spec.rb +55 -0
  109. data/spec/lib/zoom/actions/meeting/end_spec.rb +55 -0
  110. data/spec/lib/zoom/actions/meeting/get_spec.rb +59 -0
  111. data/spec/lib/zoom/actions/meeting/list_spec.rb +48 -0
  112. data/spec/lib/zoom/actions/meeting/live_spec.rb +43 -0
  113. data/spec/lib/zoom/actions/meeting/register_spec.rb +45 -0
  114. data/spec/lib/zoom/actions/meeting/update_spec.rb +53 -0
  115. data/spec/lib/zoom/actions/metrics/crc_spec.rb +48 -0
  116. data/spec/lib/zoom/actions/metrics/im_spec.rb +3 -0
  117. data/spec/lib/zoom/actions/metrics/meetingdetail_spec.rb +51 -0
  118. data/spec/lib/zoom/actions/metrics/meetings_spec.rb +61 -0
  119. data/spec/lib/zoom/actions/metrics/qos_spec.rb +3 -0
  120. data/spec/lib/zoom/actions/metrics/webinardetail_spec.rb +3 -0
  121. data/spec/lib/zoom/actions/metrics/webinars_spec.rb +3 -0
  122. data/spec/lib/zoom/actions/metrics/zoomroomdetail_spec.rb +3 -0
  123. data/spec/lib/zoom/actions/metrics/zoomrooms_spec.rb +3 -0
  124. data/spec/lib/zoom/actions/recording/delete_spec.rb +52 -0
  125. data/spec/lib/zoom/actions/recording/get_spec.rb +66 -0
  126. data/spec/lib/zoom/actions/recording/list_spec.rb +51 -0
  127. data/spec/lib/zoom/actions/recording/mc_list_spec.rb +51 -0
  128. data/spec/lib/zoom/actions/report/getaccountreport_spec.rb +57 -0
  129. data/spec/lib/zoom/actions/report/getaudioreport_spec.rb +3 -0
  130. data/spec/lib/zoom/actions/report/getdailyreport_spec.rb +62 -0
  131. data/spec/lib/zoom/actions/report/getuserreport_spec.rb +67 -0
  132. data/spec/lib/zoom/actions/user/activate_spec.rb +3 -0
  133. data/spec/lib/zoom/actions/user/assistant/delete_spec.rb +3 -0
  134. data/spec/lib/zoom/actions/user/assistant/set_spec.rb +3 -0
  135. data/spec/lib/zoom/actions/user/autocreate2_spec.rb +59 -0
  136. data/spec/lib/zoom/actions/user/autocreate_spec.rb +58 -0
  137. data/spec/lib/zoom/actions/user/checkemail_spec.rb +3 -0
  138. data/spec/lib/zoom/actions/user/checkzpk_spec.rb +3 -0
  139. data/spec/lib/zoom/actions/user/create_spec.rb +69 -0
  140. data/spec/lib/zoom/actions/user/custcreate_spec.rb +59 -0
  141. data/spec/lib/zoom/actions/user/deactivate_spec.rb +3 -0
  142. data/spec/lib/zoom/actions/user/delete_spec.rb +40 -0
  143. data/spec/lib/zoom/actions/user/get_spec.rb +50 -0
  144. data/spec/lib/zoom/actions/user/getbyemail_spec.rb +54 -0
  145. data/spec/lib/zoom/actions/user/list_spec.rb +47 -0
  146. data/spec/lib/zoom/actions/user/revoketoken_spec.rb +3 -0
  147. data/spec/lib/zoom/actions/user/update_spec.rb +40 -0
  148. data/spec/lib/zoom/actions/user/updatepassword_spec.rb +3 -0
  149. data/spec/lib/zoom/actions/webinar/attendees_list_spec.rb +3 -0
  150. data/spec/lib/zoom/actions/webinar/create_spec.rb +52 -0
  151. data/spec/lib/zoom/actions/webinar/delete_spec.rb +40 -0
  152. data/spec/lib/zoom/actions/webinar/end_spec.rb +3 -0
  153. data/spec/lib/zoom/actions/webinar/get_spec.rb +65 -0
  154. data/spec/lib/zoom/actions/webinar/list_registration_spec.rb +3 -0
  155. data/spec/lib/zoom/actions/webinar/list_spec.rb +48 -0
  156. data/spec/lib/zoom/actions/webinar/panelists_spec.rb +3 -0
  157. data/spec/lib/zoom/actions/webinar/polls_spec.rb +3 -0
  158. data/spec/lib/zoom/actions/webinar/questions_spec.rb +3 -0
  159. data/spec/lib/zoom/actions/webinar/register_spec.rb +3 -0
  160. data/spec/lib/zoom/actions/webinar/registrants/add_spec.rb +60 -0
  161. data/spec/lib/zoom/actions/webinar/registrants/approve_spec.rb +3 -0
  162. data/spec/lib/zoom/actions/webinar/registrants/list_spec.rb +40 -0
  163. data/spec/lib/zoom/actions/webinar/registration_cancel_spec.rb +3 -0
  164. data/spec/lib/zoom/actions/webinar/registration_spec.rb +3 -0
  165. data/spec/lib/zoom/actions/webinar/update_spec.rb +40 -0
  166. data/spec/lib/zoom/actions/webinar/uuid_list_spec.rb +3 -0
  167. data/spec/lib/zoom/client_spec.rb +45 -0
  168. data/spec/lib/zoom/params_spec.rb +68 -0
  169. data/spec/lib/zoom/utils_spec.rb +73 -0
  170. data/spec/spec_helper.rb +35 -0
  171. data/zoom_rb.gemspec +29 -0
  172. metadata +483 -0
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'httparty'
4
+ require 'json'
5
+ require 'jwt'
6
+
7
+ module Zoom
8
+ class Client
9
+ include HTTParty
10
+ include Actions::Account
11
+ include Actions::Group
12
+ include Actions::M323Device
13
+ include Actions::User
14
+ include Actions::Meeting
15
+ include Actions::Metrics
16
+ include Actions::Webinar
17
+ include Actions::Report
18
+ include Actions::Recording
19
+ include Actions::IM::Chat
20
+ include Actions::IM::Group
21
+
22
+ base_uri 'https://api.zoom.us/v2'
23
+ headers 'Accept' => 'application/json'
24
+ headers 'Content-Type' => 'application/json'
25
+
26
+ def initialize(config)
27
+ Utils.require_params(%i[api_key api_secret], config)
28
+ config.each { |k, v| instance_variable_set("@#{k}", v) }
29
+ self.class.default_timeout(@timeout)
30
+ end
31
+
32
+ def access_token
33
+ JWT.encode({ iss: @api_key, exp: Time.now.to_i + @timeout }, @api_secret, 'HS256', { typ: 'JWT' })
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,96 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zoom
4
+ class Defaults
5
+ ACCOUNT_OPTIONS_PAY_MODES = { 'Master account holder pays' => 'master', # default
6
+ 'Sub account holder pays' => 'sub'
7
+ }.freeze
8
+
9
+ IM_GROUP_TYPES = { 'Only members can see the group automatically. Other people can search members in the group.' => 'normal', # default
10
+ 'All people in the account can see the group and members automatically' => 'shared',
11
+ 'Nobody can see the group or search members except the members in the group' => 'restricted'
12
+ }.freeze
13
+
14
+ RECURRENCE_TYPES = { 'Daily' => 1,
15
+ 'Weekly' => 2,
16
+ 'Monthly' => 3
17
+ }.freeze # no default
18
+
19
+ RECURRENCE_WEEKLY_DAYS = { 'Sunday' => 1,
20
+ 'Monday' => 2,
21
+ 'Tuesday' => 3,
22
+ 'Wednesday' => 4,
23
+ 'Thursday' => 5,
24
+ 'Friday' => 6,
25
+ 'Saturday' => 7
26
+ }.freeze # no default
27
+
28
+ RECURRENCE_MONTHLY_WEEKS = { 'Last week' => -1,
29
+ 'First week' => 1,
30
+ 'Second week' => 2,
31
+ 'Third week' => 3,
32
+ 'Fourth week' => 4
33
+ }.freeze # no default
34
+
35
+ MEETING_TYPES = { 'Instant Meeting' => 1,
36
+ 'Scheduled Meeting' => 2, # default
37
+ 'Recurring Meeting with no fixed time' => 3,
38
+ 'Recurring Meeting with fixed time' => 8
39
+ }.freeze
40
+
41
+ MEETING_APPROVAL_TYPES = { 'Automatically Approve' => 0,
42
+ 'Manually Approve' => 1,
43
+ 'No Registration Required' => 2 # default
44
+ }.freeze
45
+
46
+ MEETING_REGISTRATION_TYPES = { 'Attendees register once and can attend any of the occurrences' => 1, # default
47
+ 'Attendees need to register for each occurrence to attend' => 2,
48
+ 'Attendees register once and can choose one or more occurrences to attend' => 3
49
+ }.freeze
50
+
51
+ MEETING_AUDIO_TYPE = { 'Both Telephony and VoIP' => 'both', # default
52
+ 'Telephony only' => 'telephony',
53
+ 'VoIP only' => 'voip'
54
+ }.freeze
55
+
56
+ MEETING_AUTO_RECORDING = { 'Record to local device' => 'local',
57
+ 'Record to cloud' => 'cloud',
58
+ 'No Recording' => 'none' # default
59
+ }.freeze
60
+
61
+ REGISTRANT_STATUS_ACTIONS = { 'Approve registrant' => 'approve',
62
+ 'Cancel registrant' => 'cancel',
63
+ 'Deny registrant' => 'deny'
64
+ }.freeze # no default
65
+
66
+ WEBINAR_TYPES = { 'Webinar' => 5, # default
67
+ 'Recurring Webinar with no fixed time' => 6,
68
+ 'Recurring Webinar with fixed time' => 9
69
+ }.freeze
70
+
71
+ WEBINAR_APPROVAL_TYPES = { 'Automatically Approve' => 0,
72
+ 'Manually Approve' => 1,
73
+ 'No Registration Required' => 2 # default
74
+ }.freeze
75
+
76
+ WEBINAR_REGISTRATION_TYPES = { 'Attendees register once and can attend any of the occurrences' => 1, # default
77
+ 'Attendees need to register for each occurrence to attend' => 2,
78
+ 'Attendees register once and can choose one or more occurrences to attend' => 3
79
+ }.freeze
80
+
81
+ WEBINAR_AUDIO_TYPE = { 'Both Telephony and VoIP' => 'both', # default
82
+ 'Telephony only' => 'telephony',
83
+ 'VoIP only' => 'voip'
84
+ }.freeze
85
+
86
+ WEBINAR_AUTO_RECORDING = { 'Record to local device' => 'local',
87
+ 'Record to cloud' => 'cloud',
88
+ 'No Recording' => 'none' # default
89
+ }.freeze
90
+
91
+ USER_TYPES = { 'basic' => 1,
92
+ 'pro' => 2,
93
+ 'corp' => 3
94
+ }.freeze # no default
95
+ end
96
+ end
data/lib/zoom/error.rb ADDED
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zoom
4
+ class Error < StandardError; end
5
+ class GatewayTimeout < StandardError; end
6
+ class NotImplemented < StandardError; end
7
+ class ParameterMissing < StandardError; end
8
+ class ParameterNotPermitted < StandardError; end
9
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zoom
4
+ module Interface
5
+ end
6
+ end
@@ -0,0 +1,64 @@
1
+ # frozen_string_literal: true
2
+ require 'pry'
3
+ module Zoom
4
+ class Params < SimpleDelegator
5
+ # delegate :keys, :key?, :has_key?, :values, :has_value?, :value?, :empty?,
6
+ # :include?, :as_json, :to_s, :each_key, to: :@parameters
7
+
8
+ def initialize(parameters = {})
9
+ @parameters = parameters
10
+ super
11
+ end
12
+
13
+
14
+ def require(*keys)
15
+ missing_keys = find_missing_keys(keys.flatten)
16
+ return self.class.new(except(keys)) if missing_keys.empty?
17
+ raise Zoom::ParameterMissing, missing_keys.to_s
18
+ end
19
+
20
+ def permit(*filters)
21
+ permitted_keys = filters.flatten.each_with_object([]) do |filter, array|
22
+ case filter
23
+ when Symbol, String
24
+ array << filter
25
+ when Hash
26
+ array << hash_filter(filter)
27
+ end
28
+ end
29
+ non_permitted_params = @parameters.keys - permitted_keys.flatten
30
+ raise Zoom::ParameterNotPermitted, non_permitted_params.to_s unless non_permitted_params.empty?
31
+ end
32
+
33
+ def except(*keys)
34
+ dup.except!(keys.flatten)
35
+ end
36
+
37
+ def except!(keys)
38
+ keys.each { |key| delete(key) }
39
+ self
40
+ end
41
+
42
+ EMPTY_ARRAY = [].freeze
43
+ EMPTY_HASH = {}.freeze
44
+
45
+ def hash_filter(filter)
46
+ # Slicing filters out non-declared keys.
47
+ slice(*filter.keys).each do |key, value|
48
+ next unless value
49
+ next unless key? key
50
+ next if filter[key] == EMPTY_ARRAY
51
+ next if filter[key] == EMPTY_HASH
52
+ # Declaration { user: :name } or { user: [:name, :age, { address: ... }] }.
53
+ self.class.new(value).permit(filter[key])
54
+ end
55
+ filter.keys
56
+ end
57
+
58
+ def find_missing_keys(keys)
59
+ keys.each_with_object([]) do |k, array|
60
+ array << k if self[k].nil?
61
+ end
62
+ end
63
+ end
64
+ end
data/lib/zoom/utils.rb ADDED
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Zoom
4
+ class Utils
5
+ class << self
6
+ def argument_error(name)
7
+ name ? ArgumentError.new("You must provide #{name}") : ArgumentError.new
8
+ end
9
+
10
+ def exclude_argument_error(name)
11
+ name ? ArgumentError.new("Unrecognized parameter #{name}") : ArgumentError.new
12
+ end
13
+
14
+ def raise_if_error!(response)
15
+ if response['code'] == 300
16
+ error_hash = { base: response['message']}
17
+ raise Error, error_hash unless response['errors']
18
+ error_hash[response['message']] = response['errors']
19
+ raise Error, error_hash
20
+ else
21
+ response
22
+ end
23
+ end
24
+
25
+ def parse_response(http_response)
26
+ response = http_response.parsed_response
27
+ response.nil? ? http_response.code : JSON.parse(response)
28
+ end
29
+
30
+ def require_params(params, options)
31
+ params = [params] unless params.is_a? Array
32
+ params.each do |param|
33
+ raise argument_error(param.to_s) unless options[param]
34
+ end
35
+ end
36
+
37
+ def permit_params(params, options)
38
+ params = [params] unless params.is_a? Array
39
+ options.keys.each do |key|
40
+ raise exclude_argument_error(key.to_s) unless params.include?(key)
41
+ end
42
+ end
43
+
44
+ # Dynamically defines bang methods for Actions modules
45
+ def define_bang_methods(klass)
46
+ klass.instance_methods.each do |m|
47
+ klass.send(:define_method, "#{m}!") do |*args|
48
+ response = send(m, *args)
49
+ Utils.raise_if_error!(response)
50
+ end
51
+ end
52
+ end
53
+
54
+ def extract_options!(array)
55
+ array.last.is_a?(::Hash) ? array.pop : {}
56
+ end
57
+
58
+ def validate_password(password)
59
+ password_regex = /\A[a-zA-Z0-9@-_*]{0,10}\z/
60
+ raise(Error , 'Invalid Password') unless password[password_regex].nil?
61
+ end
62
+
63
+ def process_datetime_params!(params, options)
64
+ params = [params] unless params.is_a? Array
65
+ params.each do |param|
66
+ if options[param] && options[param].kind_of?(Time)
67
+ options[param] = options[param].strftime('%FT%TZ')
68
+ end
69
+ end
70
+ options
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,16 @@
1
+ {
2
+ "session_id": "123456",
3
+ "group_name": "zoom",
4
+ "from": "2018-08-28",
5
+ "to": "2018-08-29",
6
+ "page_size": 30,
7
+ "page_count": 1,
8
+ "next_page_token": "",
9
+ "chat_messages": [
10
+ {
11
+ "message": "test1",
12
+ "sender": "",
13
+ "date_time": "2016-01-18T06:40:56Z"
14
+ }
15
+ ]
16
+ }
@@ -0,0 +1,16 @@
1
+ {
2
+ "from": "2018-08-28",
3
+ "to": "2018-08-29",
4
+ "page_size": 30,
5
+ "page_count": 1,
6
+ "next_page_token": "",
7
+ "chat_list": [
8
+ {
9
+ "session_id": "555",
10
+ "type": "Group",
11
+ "participants": "",
12
+ "group_name": "zoom test1",
13
+ "last_message_send_time": "2016-01-18T06:40:56Z"
14
+ }
15
+ ]
16
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "code": 300,
3
+ "message": "Validation Failed.",
4
+ "errors": [
5
+ {
6
+ "field": "user_info.type",
7
+ "message": "Missing field."
8
+ }
9
+ ]
10
+ }
@@ -0,0 +1,51 @@
1
+ {
2
+ "page_count": 1,
3
+ "page_number": 1,
4
+ "page_size": 15,
5
+ "total_records": 1,
6
+ "meetings": [{
7
+ "uuid": "j0N0YDBYSQGB4fRv444444==",
8
+ "meeting_number": 7565121024,
9
+ "host_id": "kEFomHcIRgqxZT8D086O6A",
10
+ "account_id": "NyEqCEoYSNOr4jLMHoO2tA",
11
+ "topic": "Rcoky test recording delete",
12
+ "start_time": "2014-11-06T04:10:10Z",
13
+ "timezone": "America/Los_Angeles",
14
+ "duration": 999,
15
+ "total_size": 4324324324,
16
+ "recording_count": 4,
17
+ "recording_files": [{
18
+ "id": "00401415-6783-0B14-608A-34C1DD9E3041",
19
+ "meeting_id": "j0N0YDBYSQGB4fRv444444==",
20
+ "recording_start": "2014-11-06T04:14:10Z",
21
+ "recording_end": "2014-11-06T04:24:10Z",
22
+ "file_type": "M4A",
23
+ "file_size": 432432,
24
+ "play_url": "https://brand.zoom.us/recording/play/00401415-6783-0B14-608A-34C1DD9E3041"
25
+ }, {
26
+ "id": "00401415-6783-0B14-608A-34C1DD9E3042",
27
+ "meeting_id": "j0N0YDBYSQGB4fRv444444==",
28
+ "recording_start": "2014-11-06T04:25:10Z",
29
+ "recording_end": "2014-11-06T04:26:10Z",
30
+ "file_type": "MP4",
31
+ "file_size": 432532465,
32
+ "play_url": "https://brand.zoom.us/recording/play/00401415-6783-0B14-608A-34C1DD9E3042"
33
+ }, {
34
+ "id": "00401415-6783-0B14-608A-34C1DD9E3043",
35
+ "meeting_id": "j0N0YDBYSQGB4fRv444444==",
36
+ "recording_start": "2014-11-06T04:36:10Z",
37
+ "recording_end": "2014-11-06T04:56:10Z",
38
+ "file_type": "M4A",
39
+ "file_size": 564,
40
+ "file_path": "/home/cmr-ssh/replay/2015/03/27/454289936/EDB9994C-8E0D-4688-B1CE-6460F2742A10/GMT20150327-083026_test-pmem-recording.mp4"
41
+ }, {
42
+ "id": "00401415-6783-0B14-608A-34C1DD9E3044",
43
+ "meeting_id": "j0N0YDBYSQGB4fRv444444==",
44
+ "recording_start": "2014-11-06T04:56:10Z",
45
+ "recording_end": "2014-11-06T04:56:12Z",
46
+ "file_type": "MP4",
47
+ "file_size": 643534,
48
+ "file_path": "/home/cmr-ssh/replay/2015/03/27/454289936/EDB9994C-8E0D-4688-B1CE-6460F2742A10/GMT20150327-083026_test-pmem-recording.mp4"
49
+ }]
50
+ }]
51
+ }
@@ -0,0 +1,24 @@
1
+ {
2
+ "uuid": "unique_id",
3
+ "id": "123456789",
4
+ "start_url": "https://zoom.us/s/123456789?zak=xxxxxx",
5
+ "join_url": "https://zoom.us/j/123456789",
6
+ "created_at": "2012-11-25T12:00:00Z",
7
+ "host_id": "ufR93M2pRyy8ePFN92dttq",
8
+ "topic": "Foo",
9
+ "type": 2,
10
+ "option_jbh": false,
11
+ "option_start_type": "video",
12
+ "start_time": "2012-11-25T12:00:00Z",
13
+ "duration": 30,
14
+ "timezone": "America/Los_Angeles",
15
+ "password": "123",
16
+ "h323_password": "123456",
17
+ "option_host_video": false,
18
+ "option_participants_video": false,
19
+ "option_audio": "both",
20
+ "option_enforce_login": false,
21
+ "option_enforce_login_domains ": "",
22
+ "option_alternative_hosts": "",
23
+ "status": 0
24
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "id": "252482092",
3
+ "deleted_at": "2013-04-05T15:50:47Z"
4
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "id": "123456789",
3
+ "ended_at": "2012-11-25T12:00:00Z"
4
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "uuid": "unique_id",
3
+ "id": "123456789",
4
+ "host_id": "dh23hdu23gd",
5
+ "topic": "Zoom Meeting",
6
+ "password": "",
7
+ "h323_password": "",
8
+ "status": 0,
9
+ "option_jbh": false,
10
+ "option_start_type": "video",
11
+ "option_host_video": true,
12
+ "option_participants_video": true,
13
+ "option_cn_meeting": false,
14
+ "option_enforce_login": false,
15
+ "option_enforce_login_domains": "",
16
+ "option_in_meeting": false,
17
+ "option_audio": "both",
18
+ "option_alternative_hosts": "",
19
+ "option_use_pmi": false,
20
+ "type": 8,
21
+ "start_time": "2012-11-25T12:00:00Z",
22
+ "duration": 0,
23
+ "timezone": "Asia/Hong_Kong",
24
+ "start_url": "https://zoom.us/s/123456789?zpk=hs65q23kd9sqliy612h23k",
25
+ "join_url": "https://zoom.us/j/123456789",
26
+ "created_at": "2016-12-20T02:51:42Z",
27
+ "occurrences": [
28
+ {
29
+ "occurrence_id": "1483210260000",
30
+ "start_time": "2017-01-01T02:51:00Z",
31
+ "duration": 60
32
+ }
33
+ ]
34
+ }