Method Not Allowed in VideoSDK

Video SDK Type and Version
Accessing the REST API v2

Description
Trying to kill a session from C#. Session ID is 4I8wtN3QRkmf4izPrc/2qA==. When I try to PUT against
https://api.zoom.us/v2/videosdk/sessions/4I8wtN3QRkmf4izPrc/2qA==/status it gives me a Method Not Allowed status code in the response.

The documentation says that if it starts with a / (it doesn’t) or contains a // (also doesn’t), you have to double encode it. I’m not sure what that even means, but URL encoding the session id does not fix the issue.

Error?
Status code 405 when doing a PUT on https://api.zoom.us/v2/videosdk/sessions/4I8wtN3QRkmf4izPrc/2qA==/status

Troubleshooting Routes
Tried with and without URL encoding

How To Reproduce
Steps to reproduce the behavior including:
C# app, using this code:

            var body = JsonConvert.SerializeObject(new
            {
                action = "end"
            });
            var apiUrl = $"{apiEndpoint}/{sessionId}/status";
            var response = await client.PutAsync(apiUrl, new StringContent(body, Encoding.Default, "application/json"));

The authorization header is already present and working on the GET endpoint for the session list (which is where it gets the session id from).

This post ended up having the answer: Double encoding on UUIDs. Apparently the correct approach is to double URL encode the session ID. I’m not sure why, since a single encoding should be more than sufficient.

var safeSessionId = sessionId.Contains('/') ? HttpUtility.UrlEncode(HttpUtility.UrlEncode(sessionId)) : sessionId;

Worked for me though. The documentation could use updating to note both the URL encoding, and the fact that it is needed whenever a “/” is present in the session ID

1 Like