zoom_rb 0.8.1

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 (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
+ }