Bug in cloud recording API call "Retrieve a meeting's all recordings"

This API call:

https://zoom.github.io/api/#retrieve-a-meeting-s-all-recordings

 

There is 1 required path argument:

“meetingId - The meeting ID or meeting UUID. If given meeting ID, will take the last meeting instance.”

 

The call is made in this format:

GET https://api.zoom.us/v2/meetings/{meetingId}/recordings

 

The problem is that the UUID can include the “/” character. If there is a case where there are one or more “/” at the beginning or the end of a UUID then then those “/” are viewed as duplicates of the “/” that is the delimiter and are deleted when the call is made. When Zoom receives the request, since the “/” has been removed from the UUID, Zoom returns a 404 because it no longer recognizes the UUID.

I have also tried URL encoding the UUID but this will not work because the Zoom API is not expecting a URL encoded version of the UUID and I receive the response “400 Bad Request”.

This is serious because this makes it impossible to get the recording information for a meeting whose UUID begins or ends with a slash.

The UUID needs to be encoded in a URL safe format or the API needs to accept a URL encoded version of the UUID.

Natalie, thanks for reporting this and this definitely looks like a bug on our side. we will revert back shortly.

Thanks! Please let us know when it is fixed.

This also affects other calls in the “Cloud Recording” category as well as calls in the “Dashboards” and “Reports” categories.

@Natalie, please test with no encode meeting UUIDs. 

Hi Natalie

We have discussed encoding the UUID to avoid “/”, but this way is not friendly to the developer to use REST API, they should encoding the UUID twice because the browser will automatically decode the path once.

So in this case, we pass the UUID and obtain UUID based on regular expression interception path, the developer should do nothing and keep UUID not encoded.

Please test again with no encoded meeting UUID

Hi Dean,

I don’t understand what you are asking me to try again. Any call with the the uuid in the path will fail if there is a “/” at the beginning or end of the uuid. If there hasn’t been a fix then this issue hasn’t changed.

Is it possible to change how uuids are generated so that they don’t include that character?

Hi Natalie

I mean that if there is a “/” at the beginning or end of the uuid, the call with the uuid in the path will be OK, and I have successfully tested with UUID such as “/Qac9eD8NSPOjZJ4DPGo5Zg==/”, so I want you to test again.

If it still fails, please provide your more detail of using process

Okay. I just tried again with two sample UUIDs that begin with “/”. I have confirmed in our account that the videos with these ids still exist and were not deleted but we receive a 404 when calling the retrieve meetings recordings call for both of these.

I am using the python requests module. I set allow_redirects to False and then for both UUIDs I receive a 301 and a redirect to the URL with the “extra” “/” deleted.

Can you explain the method that you were using and why it may be different?

Alright!

I’ve done more testing and I’ve gotten to the bottom of this issue.

We are using a function called urljoin from the python urllib module. This function will remove the extra forward slash character. So, in case anyone has the same issue, you need to use pure string concatenation to put the request url together.

Natalie,

I had the same issue but it is solved now that I am using Meeting ID rather than Meeting UUID for the api calls.

-Alex

Try ensuring that no authorization header is sent with the request. I am using axios to make the request and the authorization header is set to ‘Authorization’:’’

get_request= download_url
config={
headers:{
‘Acceept-Encoding’:‘gzip, deflate,br’,
‘Accept’:`/’,
‘Connection’:‘keep-alive’,
‘Authorization’:’’
},
params:{
access_token: token
}
}
Hopefully this helps.

Thanks for sharing, @Shavon_Golbourne! :slight_smile:

1 Like