Other people have asked the same question as me below, but since it hasn’t been resolved, I would like to ask the same question again.
When we use endpoint [/meetings/{meetingId}/survey ]
We call api [/meetings/{meetingId}/survey ] with the following PHP program.
The URL for the Third Party Survey is being converted to all lowercase and registered in ZOOM.
“forms.gle/q5ppeHmeDgZuaJr22” → “forms.gle/q5ppehmedgzuajr22”
Perhaps you can URL encode the characters that would be transformed, or try out other cross-site scripting (XSS) techniques that are used for filter evasion?
Zoom devs! Please fix this issue, URLs are case sensitive and your API should not be converting them to lowercase.
For anyone else looking for a workaround, URL encoding worked for me as well though it was a bit clunky. Here’s the nodeJS code I used for this:
// The zoom API appears to have a bug where it converts third party survey links to lowercase letters, which spoils the link
// Encode any uppercase letters in the URL to avoid this:
const percentEncodeUppercaseLettersAndUnsafeCharacters = (rawUrl: string) => {
const UTF8_ENCODER = new TextEncoder();
return [...rawUrl]
.map((char) => {
if (/^[A-Z]$/.test(char)) {
// Forcibly convert uppercase letters to percent encoded strings (they are skipped by encodeURI)
return `%${UTF8_ENCODER.encode(char)[0].toString(16).padStart(2, "0")}`;
} else {
// Use the standard URI encode function to handle all other characters
return encodeURI(char);
}
})
.join("");
};