bandwidth-sdk 3.8.0 → 4.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 (49) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/lib/bandwidth/client.rb +2 -0
  4. data/lib/bandwidth/configuration.rb +23 -4
  5. data/lib/bandwidth/http/api_response.rb +2 -0
  6. data/lib/bandwidth/http/faraday_client.rb +9 -2
  7. data/lib/bandwidth/messaging_lib/messaging/client.rb +2 -0
  8. data/lib/bandwidth/messaging_lib/messaging/controllers/api_controller.rb +8 -8
  9. data/lib/bandwidth/messaging_lib/messaging/controllers/base_controller.rb +1 -1
  10. data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/client.rb +2 -0
  11. data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/controllers/api_controller.rb +3 -3
  12. data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/controllers/base_controller.rb +1 -1
  13. data/lib/bandwidth/two_factor_auth_lib/two_factor_auth/models/two_factor_verify_request_schema.rb +0 -19
  14. data/lib/bandwidth/voice_lib/bxml/verbs/bridge.rb +7 -1
  15. data/lib/bandwidth/voice_lib/bxml/verbs/conference.rb +5 -1
  16. data/lib/bandwidth/voice_lib/bxml/verbs/gather.rb +5 -1
  17. data/lib/bandwidth/voice_lib/bxml/verbs/phone_number.rb +5 -1
  18. data/lib/bandwidth/voice_lib/bxml/verbs/record.rb +5 -1
  19. data/lib/bandwidth/voice_lib/bxml/verbs/redirect.rb +5 -1
  20. data/lib/bandwidth/voice_lib/bxml/verbs/ring.rb +15 -0
  21. data/lib/bandwidth/voice_lib/bxml/verbs/sip_uri.rb +25 -0
  22. data/lib/bandwidth/voice_lib/bxml/verbs/start_gather.rb +20 -0
  23. data/lib/bandwidth/voice_lib/bxml/verbs/stop_gather.rb +14 -0
  24. data/lib/bandwidth/voice_lib/bxml/verbs/tag.rb +13 -0
  25. data/lib/bandwidth/voice_lib/bxml/verbs/transfer.rb +14 -3
  26. data/lib/bandwidth/voice_lib/voice/client.rb +2 -0
  27. data/lib/bandwidth/voice_lib/voice/controllers/api_controller.rb +455 -56
  28. data/lib/bandwidth/voice_lib/voice/controllers/base_controller.rb +1 -1
  29. data/lib/bandwidth/voice_lib/voice/models/answer_fallback_method_enum.rb +17 -0
  30. data/lib/bandwidth/voice_lib/voice/models/api_call_response.rb +45 -0
  31. data/lib/bandwidth/voice_lib/voice/models/api_create_call_request.rb +117 -12
  32. data/lib/bandwidth/voice_lib/voice/models/api_modify_call_request.rb +36 -0
  33. data/lib/bandwidth/voice_lib/voice/models/api_modify_conference_request.rb +107 -0
  34. data/lib/bandwidth/voice_lib/voice/models/api_transcribe_recording_request.rb +11 -2
  35. data/lib/bandwidth/voice_lib/voice/models/call_engine_modify_conference_request.rb +74 -2
  36. data/lib/bandwidth/voice_lib/voice/models/conference_detail.rb +7 -4
  37. data/lib/bandwidth/voice_lib/voice/models/conference_recording_metadata_response.rb +126 -0
  38. data/lib/bandwidth/voice_lib/voice/models/recording_metadata_response.rb +32 -4
  39. data/lib/bandwidth/voice_lib/voice/models/redirect_fallback_method_enum.rb +17 -0
  40. data/lib/bandwidth/voice_lib/voice/models/status1_enum.rb +4 -1
  41. data/lib/bandwidth/voice_lib/voice/models/{status2_enum.rb → status3_enum.rb} +3 -3
  42. data/lib/bandwidth/voice_lib/voice/models/transcription.rb +1 -1
  43. data/lib/bandwidth/voice_lib/voice.rb +5 -2
  44. data/lib/bandwidth/web_rtc_lib/utils/web_rtc_transfer.rb +13 -0
  45. data/lib/bandwidth/web_rtc_lib/web_rtc/client.rb +2 -0
  46. data/lib/bandwidth/web_rtc_lib/web_rtc/controllers/api_controller.rb +24 -24
  47. data/lib/bandwidth/web_rtc_lib/web_rtc/controllers/base_controller.rb +1 -1
  48. data/lib/bandwidth.rb +24 -1
  49. metadata +35 -13
@@ -22,7 +22,7 @@ module Voice
22
22
  _query_builder << '/api/v2/accounts/{accountId}/calls'
23
23
  _query_builder = APIHelper.append_url_with_template_parameters(
24
24
  _query_builder,
25
- 'accountId' => { 'value' => account_id, 'encode' => true }
25
+ 'accountId' => { 'value' => account_id, 'encode' => false }
26
26
  )
27
27
  _query_url = APIHelper.clean_url _query_builder
28
28
 
@@ -102,8 +102,8 @@ module Voice
102
102
  _query_builder << '/api/v2/accounts/{accountId}/calls/{callId}'
103
103
  _query_builder = APIHelper.append_url_with_template_parameters(
104
104
  _query_builder,
105
- 'accountId' => { 'value' => account_id, 'encode' => true },
106
- 'callId' => { 'value' => call_id, 'encode' => true }
105
+ 'accountId' => { 'value' => account_id, 'encode' => false },
106
+ 'callId' => { 'value' => call_id, 'encode' => false }
107
107
  )
108
108
  _query_url = APIHelper.clean_url _query_builder
109
109
 
@@ -183,8 +183,8 @@ module Voice
183
183
  _query_builder << '/api/v2/accounts/{accountId}/calls/{callId}'
184
184
  _query_builder = APIHelper.append_url_with_template_parameters(
185
185
  _query_builder,
186
- 'accountId' => { 'value' => account_id, 'encode' => true },
187
- 'callId' => { 'value' => call_id, 'encode' => true }
186
+ 'accountId' => { 'value' => account_id, 'encode' => false },
187
+ 'callId' => { 'value' => call_id, 'encode' => false }
188
188
  )
189
189
  _query_url = APIHelper.clean_url _query_builder
190
190
 
@@ -262,8 +262,8 @@ module Voice
262
262
  _query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recording'
263
263
  _query_builder = APIHelper.append_url_with_template_parameters(
264
264
  _query_builder,
265
- 'accountId' => { 'value' => account_id, 'encode' => true },
266
- 'callId' => { 'value' => call_id, 'encode' => true }
265
+ 'accountId' => { 'value' => account_id, 'encode' => false },
266
+ 'callId' => { 'value' => call_id, 'encode' => false }
267
267
  )
268
268
  _query_url = APIHelper.clean_url _query_builder
269
269
 
@@ -332,31 +332,16 @@ module Voice
332
332
  # took place during the specified call
333
333
  # @param [String] account_id Required parameter: Example:
334
334
  # @param [String] call_id Required parameter: Example:
335
- # @param [String] from Optional parameter: Example:
336
- # @param [String] to Optional parameter: Example:
337
- # @param [String] min_start_time Optional parameter: Example:
338
- # @param [String] max_start_time Optional parameter: Example:
339
335
  # @return [List of RecordingMetadataResponse] response from the API call
340
336
  def get_query_metadata_for_account_and_call(account_id,
341
- call_id,
342
- from: nil,
343
- to: nil,
344
- min_start_time: nil,
345
- max_start_time: nil)
337
+ call_id)
346
338
  # Prepare query url.
347
339
  _query_builder = config.get_base_uri(Server::VOICEDEFAULT)
348
340
  _query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recordings'
349
341
  _query_builder = APIHelper.append_url_with_template_parameters(
350
342
  _query_builder,
351
- 'accountId' => { 'value' => account_id, 'encode' => true },
352
- 'callId' => { 'value' => call_id, 'encode' => true }
353
- )
354
- _query_builder = APIHelper.append_url_with_query_parameters(
355
- _query_builder,
356
- 'from' => from,
357
- 'to' => to,
358
- 'minStartTime' => min_start_time,
359
- 'maxStartTime' => max_start_time
343
+ 'accountId' => { 'value' => account_id, 'encode' => false },
344
+ 'callId' => { 'value' => call_id, 'encode' => false }
360
345
  )
361
346
  _query_url = APIHelper.clean_url _query_builder
362
347
 
@@ -437,9 +422,9 @@ module Voice
437
422
  _query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recordings/{recordingId}'
438
423
  _query_builder = APIHelper.append_url_with_template_parameters(
439
424
  _query_builder,
440
- 'accountId' => { 'value' => account_id, 'encode' => true },
441
- 'callId' => { 'value' => call_id, 'encode' => true },
442
- 'recordingId' => { 'value' => recording_id, 'encode' => true }
425
+ 'accountId' => { 'value' => account_id, 'encode' => false },
426
+ 'callId' => { 'value' => call_id, 'encode' => false },
427
+ 'recordingId' => { 'value' => recording_id, 'encode' => false }
443
428
  )
444
429
  _query_url = APIHelper.clean_url _query_builder
445
430
 
@@ -519,9 +504,9 @@ module Voice
519
504
  _query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recordings/{recordingId}'
520
505
  _query_builder = APIHelper.append_url_with_template_parameters(
521
506
  _query_builder,
522
- 'accountId' => { 'value' => account_id, 'encode' => true },
523
- 'callId' => { 'value' => call_id, 'encode' => true },
524
- 'recordingId' => { 'value' => recording_id, 'encode' => true }
507
+ 'accountId' => { 'value' => account_id, 'encode' => false },
508
+ 'callId' => { 'value' => call_id, 'encode' => false },
509
+ 'recordingId' => { 'value' => recording_id, 'encode' => false }
525
510
  )
526
511
  _query_url = APIHelper.clean_url _query_builder
527
512
 
@@ -592,9 +577,9 @@ module Voice
592
577
  _query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recordings/{recordingId}/media'
593
578
  _query_builder = APIHelper.append_url_with_template_parameters(
594
579
  _query_builder,
595
- 'accountId' => { 'value' => account_id, 'encode' => true },
596
- 'callId' => { 'value' => call_id, 'encode' => true },
597
- 'recordingId' => { 'value' => recording_id, 'encode' => true }
580
+ 'accountId' => { 'value' => account_id, 'encode' => false },
581
+ 'callId' => { 'value' => call_id, 'encode' => false },
582
+ 'recordingId' => { 'value' => recording_id, 'encode' => false }
598
583
  )
599
584
  _query_url = APIHelper.clean_url _query_builder
600
585
 
@@ -667,9 +652,9 @@ module Voice
667
652
  _query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recordings/{recordingId}/media'
668
653
  _query_builder = APIHelper.append_url_with_template_parameters(
669
654
  _query_builder,
670
- 'accountId' => { 'value' => account_id, 'encode' => true },
671
- 'callId' => { 'value' => call_id, 'encode' => true },
672
- 'recordingId' => { 'value' => recording_id, 'encode' => true }
655
+ 'accountId' => { 'value' => account_id, 'encode' => false },
656
+ 'callId' => { 'value' => call_id, 'encode' => false },
657
+ 'recordingId' => { 'value' => recording_id, 'encode' => false }
673
658
  )
674
659
  _query_url = APIHelper.clean_url _query_builder
675
660
 
@@ -740,9 +725,9 @@ module Voice
740
725
  _query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recordings/{recordingId}/transcription'
741
726
  _query_builder = APIHelper.append_url_with_template_parameters(
742
727
  _query_builder,
743
- 'accountId' => { 'value' => account_id, 'encode' => true },
744
- 'callId' => { 'value' => call_id, 'encode' => true },
745
- 'recordingId' => { 'value' => recording_id, 'encode' => true }
728
+ 'accountId' => { 'value' => account_id, 'encode' => false },
729
+ 'callId' => { 'value' => call_id, 'encode' => false },
730
+ 'recordingId' => { 'value' => recording_id, 'encode' => false }
746
731
  )
747
732
  _query_url = APIHelper.clean_url _query_builder
748
733
 
@@ -824,9 +809,9 @@ module Voice
824
809
  _query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recordings/{recordingId}/transcription'
825
810
  _query_builder = APIHelper.append_url_with_template_parameters(
826
811
  _query_builder,
827
- 'accountId' => { 'value' => account_id, 'encode' => true },
828
- 'callId' => { 'value' => call_id, 'encode' => true },
829
- 'recordingId' => { 'value' => recording_id, 'encode' => true }
812
+ 'accountId' => { 'value' => account_id, 'encode' => false },
813
+ 'callId' => { 'value' => call_id, 'encode' => false },
814
+ 'recordingId' => { 'value' => recording_id, 'encode' => false }
830
815
  )
831
816
  _query_url = APIHelper.clean_url _query_builder
832
817
 
@@ -910,9 +895,9 @@ module Voice
910
895
  _query_builder << '/api/v2/accounts/{accountId}/calls/{callId}/recordings/{recordingId}/transcription'
911
896
  _query_builder = APIHelper.append_url_with_template_parameters(
912
897
  _query_builder,
913
- 'accountId' => { 'value' => account_id, 'encode' => true },
914
- 'callId' => { 'value' => call_id, 'encode' => true },
915
- 'recordingId' => { 'value' => recording_id, 'encode' => true }
898
+ 'accountId' => { 'value' => account_id, 'encode' => false },
899
+ 'callId' => { 'value' => call_id, 'encode' => false },
900
+ 'recordingId' => { 'value' => recording_id, 'encode' => false }
916
901
  )
917
902
  _query_url = APIHelper.clean_url _query_builder
918
903
 
@@ -970,6 +955,101 @@ module Voice
970
955
  ApiResponse.new(_response)
971
956
  end
972
957
 
958
+ # Returns information about the conferences in the account
959
+ # @param [String] account_id Required parameter: Example:
960
+ # @param [Integer] page_size Optional parameter: Example:1000
961
+ # @param [String] page_token Optional parameter: Example:
962
+ # @param [String] name Optional parameter: Example:
963
+ # @param [String] min_created_time Optional parameter: Example:
964
+ # @param [String] max_created_time Optional parameter: Example:
965
+ # @return [List of ConferenceDetail] response from the API call
966
+ def get_conferences_by_account(account_id,
967
+ page_size: 1000,
968
+ page_token: nil,
969
+ name: nil,
970
+ min_created_time: nil,
971
+ max_created_time: nil)
972
+ # Prepare query url.
973
+ _query_builder = config.get_base_uri(Server::VOICEDEFAULT)
974
+ _query_builder << '/api/v2/accounts/{accountId}/conferences'
975
+ _query_builder = APIHelper.append_url_with_template_parameters(
976
+ _query_builder,
977
+ 'accountId' => { 'value' => account_id, 'encode' => false }
978
+ )
979
+ _query_builder = APIHelper.append_url_with_query_parameters(
980
+ _query_builder,
981
+ 'pageSize' => page_size,
982
+ 'pageToken' => page_token,
983
+ 'name' => name,
984
+ 'minCreatedTime' => min_created_time,
985
+ 'maxCreatedTime' => max_created_time
986
+ )
987
+ _query_url = APIHelper.clean_url _query_builder
988
+
989
+ # Prepare headers.
990
+ _headers = {
991
+ 'accept' => 'application/json'
992
+ }
993
+
994
+ # Prepare and execute HttpRequest.
995
+ _request = config.http_client.get(
996
+ _query_url,
997
+ headers: _headers
998
+ )
999
+ VoiceBasicAuth.apply(config, _request)
1000
+ _response = execute_request(_request)
1001
+
1002
+ # Validate response against endpoint and global error codes.
1003
+ if _response.status_code == 400
1004
+ raise ApiErrorResponseException.new(
1005
+ 'Something\'s not quite right... Your request is invalid. Please' \
1006
+ ' fix it before trying again.',
1007
+ _response
1008
+ )
1009
+ elsif _response.status_code == 401
1010
+ raise APIException.new(
1011
+ 'Your credentials are invalid. Please use your Bandwidth dashboard' \
1012
+ ' credentials to authenticate to the API.',
1013
+ _response
1014
+ )
1015
+ elsif _response.status_code == 403
1016
+ raise ApiErrorResponseException.new(
1017
+ 'User unauthorized to perform this action.',
1018
+ _response
1019
+ )
1020
+ elsif _response.status_code == 404
1021
+ raise ApiErrorResponseException.new(
1022
+ 'The resource specified cannot be found or does not belong to you.',
1023
+ _response
1024
+ )
1025
+ elsif _response.status_code == 415
1026
+ raise ApiErrorResponseException.new(
1027
+ 'We don\'t support that media type. If a request body is required,' \
1028
+ ' please send it to us as `application/json`.',
1029
+ _response
1030
+ )
1031
+ elsif _response.status_code == 429
1032
+ raise ApiErrorResponseException.new(
1033
+ 'You\'re sending requests to this endpoint too frequently. Please' \
1034
+ ' slow your request rate down and try again.',
1035
+ _response
1036
+ )
1037
+ elsif _response.status_code == 500
1038
+ raise ApiErrorResponseException.new(
1039
+ 'Something unexpected happened. Please try again.',
1040
+ _response
1041
+ )
1042
+ end
1043
+ validate_response(_response)
1044
+
1045
+ # Return appropriate response type.
1046
+ decoded = APIHelper.json_deserialize(_response.raw_body)
1047
+ ApiResponse.new(
1048
+ _response,
1049
+ data: decoded.map { |element| ConferenceDetail.from_hash(element) }
1050
+ )
1051
+ end
1052
+
973
1053
  # Returns information about the specified conference
974
1054
  # @param [String] account_id Required parameter: Example:
975
1055
  # @param [String] conference_id Required parameter: Example:
@@ -981,8 +1061,8 @@ module Voice
981
1061
  _query_builder << '/api/v2/accounts/{accountId}/conferences/{conferenceId}'
982
1062
  _query_builder = APIHelper.append_url_with_template_parameters(
983
1063
  _query_builder,
984
- 'accountId' => { 'value' => account_id, 'encode' => true },
985
- 'conferenceId' => { 'value' => conference_id, 'encode' => true }
1064
+ 'accountId' => { 'value' => account_id, 'encode' => false },
1065
+ 'conferenceId' => { 'value' => conference_id, 'encode' => false }
986
1066
  )
987
1067
  _query_url = APIHelper.clean_url _query_builder
988
1068
 
@@ -1052,8 +1132,7 @@ module Voice
1052
1132
  # Modify the conference state
1053
1133
  # @param [String] account_id Required parameter: Example:
1054
1134
  # @param [String] conference_id Required parameter: Example:
1055
- # @param [CallEngineModifyConferenceRequest] body Optional parameter:
1056
- # Example:
1135
+ # @param [ApiModifyConferenceRequest] body Optional parameter: Example:
1057
1136
  # @return [void] response from the API call
1058
1137
  def modify_conference(account_id,
1059
1138
  conference_id,
@@ -1063,8 +1142,8 @@ module Voice
1063
1142
  _query_builder << '/api/v2/accounts/{accountId}/conferences/{conferenceId}'
1064
1143
  _query_builder = APIHelper.append_url_with_template_parameters(
1065
1144
  _query_builder,
1066
- 'accountId' => { 'value' => account_id, 'encode' => true },
1067
- 'conferenceId' => { 'value' => conference_id, 'encode' => true }
1145
+ 'accountId' => { 'value' => account_id, 'encode' => false },
1146
+ 'conferenceId' => { 'value' => conference_id, 'encode' => false }
1068
1147
  )
1069
1148
  _query_url = APIHelper.clean_url _query_builder
1070
1149
 
@@ -1129,6 +1208,88 @@ module Voice
1129
1208
  ApiResponse.new(_response)
1130
1209
  end
1131
1210
 
1211
+ # Updates settings for a particular conference member
1212
+ # @param [String] account_id Required parameter: Example:
1213
+ # @param [String] conference_id Required parameter: Example:
1214
+ # @param [String] call_id Required parameter: Example:
1215
+ # @param [ConferenceMemberDetail] body Optional parameter: Example:
1216
+ # @return [void] response from the API call
1217
+ def modify_conference_member(account_id,
1218
+ conference_id,
1219
+ call_id,
1220
+ body: nil)
1221
+ # Prepare query url.
1222
+ _query_builder = config.get_base_uri(Server::VOICEDEFAULT)
1223
+ _query_builder << '/api/v2/accounts/{accountId}/conferences/{conferenceId}/members/{callId}'
1224
+ _query_builder = APIHelper.append_url_with_template_parameters(
1225
+ _query_builder,
1226
+ 'accountId' => { 'value' => account_id, 'encode' => false },
1227
+ 'conferenceId' => { 'value' => conference_id, 'encode' => false },
1228
+ 'callId' => { 'value' => call_id, 'encode' => false }
1229
+ )
1230
+ _query_url = APIHelper.clean_url _query_builder
1231
+
1232
+ # Prepare headers.
1233
+ _headers = {
1234
+ 'content-type' => 'application/json; charset=utf-8'
1235
+ }
1236
+
1237
+ # Prepare and execute HttpRequest.
1238
+ _request = config.http_client.put(
1239
+ _query_url,
1240
+ headers: _headers,
1241
+ parameters: body.to_json
1242
+ )
1243
+ VoiceBasicAuth.apply(config, _request)
1244
+ _response = execute_request(_request)
1245
+
1246
+ # Validate response against endpoint and global error codes.
1247
+ if _response.status_code == 400
1248
+ raise ApiErrorResponseException.new(
1249
+ 'Something\'s not quite right... Your request is invalid. Please' \
1250
+ ' fix it before trying again.',
1251
+ _response
1252
+ )
1253
+ elsif _response.status_code == 401
1254
+ raise APIException.new(
1255
+ 'Your credentials are invalid. Please use your Bandwidth dashboard' \
1256
+ ' credentials to authenticate to the API.',
1257
+ _response
1258
+ )
1259
+ elsif _response.status_code == 403
1260
+ raise ApiErrorResponseException.new(
1261
+ 'User unauthorized to perform this action.',
1262
+ _response
1263
+ )
1264
+ elsif _response.status_code == 404
1265
+ raise ApiErrorResponseException.new(
1266
+ 'The resource specified cannot be found or does not belong to you.',
1267
+ _response
1268
+ )
1269
+ elsif _response.status_code == 415
1270
+ raise ApiErrorResponseException.new(
1271
+ 'We don\'t support that media type. If a request body is required,' \
1272
+ ' please send it to us as `application/json`.',
1273
+ _response
1274
+ )
1275
+ elsif _response.status_code == 429
1276
+ raise ApiErrorResponseException.new(
1277
+ 'You\'re sending requests to this endpoint too frequently. Please' \
1278
+ ' slow your request rate down and try again.',
1279
+ _response
1280
+ )
1281
+ elsif _response.status_code == 500
1282
+ raise ApiErrorResponseException.new(
1283
+ 'Something unexpected happened. Please try again.',
1284
+ _response
1285
+ )
1286
+ end
1287
+ validate_response(_response)
1288
+
1289
+ # Return appropriate response type.
1290
+ ApiResponse.new(_response)
1291
+ end
1292
+
1132
1293
  # Returns information about the specified conference member
1133
1294
  # @param [String] account_id Required parameter: Example:
1134
1295
  # @param [String] conference_id Required parameter: Example:
@@ -1142,9 +1303,9 @@ module Voice
1142
1303
  _query_builder << '/api/v2/accounts/{accountId}/conferences/{conferenceId}/members/{memberId}'
1143
1304
  _query_builder = APIHelper.append_url_with_template_parameters(
1144
1305
  _query_builder,
1145
- 'accountId' => { 'value' => account_id, 'encode' => true },
1146
- 'conferenceId' => { 'value' => conference_id, 'encode' => true },
1147
- 'memberId' => { 'value' => member_id, 'encode' => true }
1306
+ 'accountId' => { 'value' => account_id, 'encode' => false },
1307
+ 'conferenceId' => { 'value' => conference_id, 'encode' => false },
1308
+ 'memberId' => { 'value' => member_id, 'encode' => false }
1148
1309
  )
1149
1310
  _query_url = APIHelper.clean_url _query_builder
1150
1311
 
@@ -1211,6 +1372,244 @@ module Voice
1211
1372
  )
1212
1373
  end
1213
1374
 
1375
+ # Returns a (potentially empty) list of metadata for the recordings that
1376
+ # took place during the specified conference
1377
+ # @param [String] account_id Required parameter: Example:
1378
+ # @param [String] conference_id Required parameter: Example:
1379
+ # @return [List of ConferenceRecordingMetadataResponse] response from the API call
1380
+ def get_query_metadata_for_account_and_conference(account_id,
1381
+ conference_id)
1382
+ # Prepare query url.
1383
+ _query_builder = config.get_base_uri(Server::VOICEDEFAULT)
1384
+ _query_builder << '/api/v2/accounts/{accountId}/conferences/{conferenceId}/recordings'
1385
+ _query_builder = APIHelper.append_url_with_template_parameters(
1386
+ _query_builder,
1387
+ 'accountId' => { 'value' => account_id, 'encode' => false },
1388
+ 'conferenceId' => { 'value' => conference_id, 'encode' => false }
1389
+ )
1390
+ _query_url = APIHelper.clean_url _query_builder
1391
+
1392
+ # Prepare headers.
1393
+ _headers = {
1394
+ 'accept' => 'application/json'
1395
+ }
1396
+
1397
+ # Prepare and execute HttpRequest.
1398
+ _request = config.http_client.get(
1399
+ _query_url,
1400
+ headers: _headers
1401
+ )
1402
+ VoiceBasicAuth.apply(config, _request)
1403
+ _response = execute_request(_request)
1404
+
1405
+ # Validate response against endpoint and global error codes.
1406
+ if _response.status_code == 400
1407
+ raise ApiErrorResponseException.new(
1408
+ 'Something\'s not quite right... Your request is invalid. Please' \
1409
+ ' fix it before trying again.',
1410
+ _response
1411
+ )
1412
+ elsif _response.status_code == 401
1413
+ raise APIException.new(
1414
+ 'Your credentials are invalid. Please use your Bandwidth dashboard' \
1415
+ ' credentials to authenticate to the API.',
1416
+ _response
1417
+ )
1418
+ elsif _response.status_code == 403
1419
+ raise ApiErrorResponseException.new(
1420
+ 'User unauthorized to perform this action.',
1421
+ _response
1422
+ )
1423
+ elsif _response.status_code == 404
1424
+ raise ApiErrorResponseException.new(
1425
+ 'The resource specified cannot be found or does not belong to you.',
1426
+ _response
1427
+ )
1428
+ elsif _response.status_code == 415
1429
+ raise ApiErrorResponseException.new(
1430
+ 'We don\'t support that media type. If a request body is required,' \
1431
+ ' please send it to us as `application/json`.',
1432
+ _response
1433
+ )
1434
+ elsif _response.status_code == 429
1435
+ raise ApiErrorResponseException.new(
1436
+ 'You\'re sending requests to this endpoint too frequently. Please' \
1437
+ ' slow your request rate down and try again.',
1438
+ _response
1439
+ )
1440
+ elsif _response.status_code == 500
1441
+ raise ApiErrorResponseException.new(
1442
+ 'Something unexpected happened. Please try again.',
1443
+ _response
1444
+ )
1445
+ end
1446
+ validate_response(_response)
1447
+
1448
+ # Return appropriate response type.
1449
+ decoded = APIHelper.json_deserialize(_response.raw_body)
1450
+ ApiResponse.new(
1451
+ _response,
1452
+ data: decoded.map { |element| ConferenceRecordingMetadataResponse.from_hash(element) }
1453
+ )
1454
+ end
1455
+
1456
+ # Returns metadata for the specified recording
1457
+ # @param [String] account_id Required parameter: Example:
1458
+ # @param [String] conference_id Required parameter: Example:
1459
+ # @param [String] recording_id Required parameter: Example:
1460
+ # @return [RecordingMetadataResponse] response from the API call
1461
+ def get_metadata_for_conference_recording(account_id,
1462
+ conference_id,
1463
+ recording_id)
1464
+ # Prepare query url.
1465
+ _query_builder = config.get_base_uri(Server::VOICEDEFAULT)
1466
+ _query_builder << '/api/v2/accounts/{accountId}/conferences/{conferenceId}/recordings/{recordingId}'
1467
+ _query_builder = APIHelper.append_url_with_template_parameters(
1468
+ _query_builder,
1469
+ 'accountId' => { 'value' => account_id, 'encode' => false },
1470
+ 'conferenceId' => { 'value' => conference_id, 'encode' => false },
1471
+ 'recordingId' => { 'value' => recording_id, 'encode' => false }
1472
+ )
1473
+ _query_url = APIHelper.clean_url _query_builder
1474
+
1475
+ # Prepare headers.
1476
+ _headers = {
1477
+ 'accept' => 'application/json'
1478
+ }
1479
+
1480
+ # Prepare and execute HttpRequest.
1481
+ _request = config.http_client.get(
1482
+ _query_url,
1483
+ headers: _headers
1484
+ )
1485
+ VoiceBasicAuth.apply(config, _request)
1486
+ _response = execute_request(_request)
1487
+
1488
+ # Validate response against endpoint and global error codes.
1489
+ if _response.status_code == 400
1490
+ raise ApiErrorResponseException.new(
1491
+ 'Something\'s not quite right... Your request is invalid. Please' \
1492
+ ' fix it before trying again.',
1493
+ _response
1494
+ )
1495
+ elsif _response.status_code == 401
1496
+ raise APIException.new(
1497
+ 'Your credentials are invalid. Please use your Bandwidth dashboard' \
1498
+ ' credentials to authenticate to the API.',
1499
+ _response
1500
+ )
1501
+ elsif _response.status_code == 403
1502
+ raise ApiErrorResponseException.new(
1503
+ 'User unauthorized to perform this action.',
1504
+ _response
1505
+ )
1506
+ elsif _response.status_code == 404
1507
+ raise ApiErrorResponseException.new(
1508
+ 'The resource specified cannot be found or does not belong to you.',
1509
+ _response
1510
+ )
1511
+ elsif _response.status_code == 415
1512
+ raise ApiErrorResponseException.new(
1513
+ 'We don\'t support that media type. If a request body is required,' \
1514
+ ' please send it to us as `application/json`.',
1515
+ _response
1516
+ )
1517
+ elsif _response.status_code == 429
1518
+ raise ApiErrorResponseException.new(
1519
+ 'You\'re sending requests to this endpoint too frequently. Please' \
1520
+ ' slow your request rate down and try again.',
1521
+ _response
1522
+ )
1523
+ elsif _response.status_code == 500
1524
+ raise ApiErrorResponseException.new(
1525
+ 'Something unexpected happened. Please try again.',
1526
+ _response
1527
+ )
1528
+ end
1529
+ validate_response(_response)
1530
+
1531
+ # Return appropriate response type.
1532
+ decoded = APIHelper.json_deserialize(_response.raw_body)
1533
+ ApiResponse.new(
1534
+ _response, data: RecordingMetadataResponse.from_hash(decoded)
1535
+ )
1536
+ end
1537
+
1538
+ # Downloads the specified recording
1539
+ # @param [String] account_id Required parameter: Example:
1540
+ # @param [String] conference_id Required parameter: Example:
1541
+ # @param [String] recording_id Required parameter: Example:
1542
+ # @return [Binary] response from the API call
1543
+ def get_stream_conference_recording_media(account_id,
1544
+ conference_id,
1545
+ recording_id)
1546
+ # Prepare query url.
1547
+ _query_builder = config.get_base_uri(Server::VOICEDEFAULT)
1548
+ _query_builder << '/api/v2/accounts/{accountId}/conferences/{conferenceId}/recordings/{recordingId}/media'
1549
+ _query_builder = APIHelper.append_url_with_template_parameters(
1550
+ _query_builder,
1551
+ 'accountId' => { 'value' => account_id, 'encode' => false },
1552
+ 'conferenceId' => { 'value' => conference_id, 'encode' => false },
1553
+ 'recordingId' => { 'value' => recording_id, 'encode' => false }
1554
+ )
1555
+ _query_url = APIHelper.clean_url _query_builder
1556
+
1557
+ # Prepare and execute HttpRequest.
1558
+ _request = config.http_client.get(
1559
+ _query_url
1560
+ )
1561
+ VoiceBasicAuth.apply(config, _request)
1562
+ _response = execute_request(_request, binary: true)
1563
+
1564
+ # Validate response against endpoint and global error codes.
1565
+ if _response.status_code == 400
1566
+ raise ApiErrorResponseException.new(
1567
+ 'Something\'s not quite right... Your request is invalid. Please' \
1568
+ ' fix it before trying again.',
1569
+ _response
1570
+ )
1571
+ elsif _response.status_code == 401
1572
+ raise APIException.new(
1573
+ 'Your credentials are invalid. Please use your Bandwidth dashboard' \
1574
+ ' credentials to authenticate to the API.',
1575
+ _response
1576
+ )
1577
+ elsif _response.status_code == 403
1578
+ raise ApiErrorResponseException.new(
1579
+ 'User unauthorized to perform this action.',
1580
+ _response
1581
+ )
1582
+ elsif _response.status_code == 404
1583
+ raise ApiErrorResponseException.new(
1584
+ 'The resource specified cannot be found or does not belong to you.',
1585
+ _response
1586
+ )
1587
+ elsif _response.status_code == 415
1588
+ raise ApiErrorResponseException.new(
1589
+ 'We don\'t support that media type. If a request body is required,' \
1590
+ ' please send it to us as `application/json`.',
1591
+ _response
1592
+ )
1593
+ elsif _response.status_code == 429
1594
+ raise ApiErrorResponseException.new(
1595
+ 'You\'re sending requests to this endpoint too frequently. Please' \
1596
+ ' slow your request rate down and try again.',
1597
+ _response
1598
+ )
1599
+ elsif _response.status_code == 500
1600
+ raise ApiErrorResponseException.new(
1601
+ 'Something unexpected happened. Please try again.',
1602
+ _response
1603
+ )
1604
+ end
1605
+ validate_response(_response)
1606
+
1607
+ # Return appropriate response type.
1608
+ ApiResponse.new(
1609
+ _response, data: _response.raw_body
1610
+ )
1611
+ end
1612
+
1214
1613
  # Returns a list of metadata for the recordings associated with the
1215
1614
  # specified account. The list can be filtered by the optional from, to,
1216
1615
  # minStartTime, and maxStartTime arguments. The list is capped at 1000
@@ -1231,7 +1630,7 @@ module Voice
1231
1630
  _query_builder << '/api/v2/accounts/{accountId}/recordings'
1232
1631
  _query_builder = APIHelper.append_url_with_template_parameters(
1233
1632
  _query_builder,
1234
- 'accountId' => { 'value' => account_id, 'encode' => true }
1633
+ 'accountId' => { 'value' => account_id, 'encode' => false }
1235
1634
  )
1236
1635
  _query_builder = APIHelper.append_url_with_query_parameters(
1237
1636
  _query_builder,
@@ -13,7 +13,7 @@ module Bandwidth
13
13
  @http_call_back = http_call_back
14
14
 
15
15
  @global_headers = {
16
- 'user-agent' => 'ruby-sdk-refs/tags/ruby3.8.0'
16
+ 'user-agent' => 'ruby-sdk'
17
17
  }
18
18
  end
19
19
 
@@ -0,0 +1,17 @@
1
+ # bandwidth
2
+ #
3
+ # This file was automatically generated by APIMATIC v2.0
4
+ # ( https://apimatic.io ).
5
+
6
+ module Bandwidth
7
+ # AnswerFallbackMethod.
8
+ class AnswerFallbackMethodEnum
9
+ ANSWER_FALLBACK_METHOD_ENUM = [
10
+ # TODO: Write general description for POST
11
+ POST = 'POST'.freeze,
12
+
13
+ # TODO: Write general description for GET
14
+ GET = 'GET'.freeze
15
+ ].freeze
16
+ end
17
+ end