code":3001,"message":"Meeting does not exist - When using meeting UUID

Created on 18 November 2024, about 1 month ago

Problem/Motivation

Zoom API endpoints that require a meeting UUID return: code":3001,"message":"Meeting does not exist: [uuid]

Endpoints that use the numeric meeting ID return correctly.

Steps to reproduce

As a sample, this endpoint will accept either type:
"https://api.zoom.us/v2/past_meetings/mymeetingUUIDsZa6/participants" returns the error.
"https://api.zoom.us/v2/past_meetings/[numeric_meeting_id]/participants" returns the data.

The Zoom API docs mention this whenever they require the UUID:

  • If you provide a meeting UUID that begins with a / character or contains the // characters, you must double-encode the meeting UUID before making an API request.

Proposed resolution

Remaining tasks

User interface changes

API changes

Data model changes

πŸ› Bug report
Status

Active

Version

3.0

Component

Code

Created by

πŸ‡ΊπŸ‡ΈUnited States boinkster

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Comments & Activities

  • Issue created by @boinkster
  • πŸ‡ΊπŸ‡ΈUnited States boinkster
  • πŸ‡ΊπŸ‡ΈUnited States joelsteidl

    hi @boinkster,

    Sorry you have having that issue. Add the end of the day, we are just using Guzzle for making the request. You could try something like this though....

    function doubleEncodeMeetingUUID($meetingUUID) {
        // Check if the meeting UUID begins with a '/' or contains '//'.
        if (strpos($meetingUUID, '/') === 0 || strpos($meetingUUID, '//') !== false) {
            // Double-encode the meeting UUID.
            $meetingUUID = rawurlencode(rawurlencode($meetingUUID));
        }
        return $meetingUUID;
    }
    
    // Example usage:
    $meetingUUID = '/example//uuid';
    $encodedUUID = doubleEncodeMeetingUUID($meetingUUID);
    echo $encodedUUID; // Output: %252Fexample%252F%252Fuuid

    Completely untested, but maybe try a single or double rawurlencode before you concatenate your endpoint string. I'm happy to try and test further if that doesn't work.

  • πŸ‡ΊπŸ‡ΈUnited States joelsteidl

    hi @boinkster,

    Ignore my previous comment...potentially still relevant in some instances but this is really a dumb thing with the Zoom API.

    After the meeting has passed, the meeting gets assigned a new UUID. This may not be that helpful in your situation if you are storing the original UUID.

    <?php
    
    // Meeting ID, not the UUID.
    $meeting_id = '1234567890';
    $client = \Drupal::service('zoomapi.client');
    $endpoint = "past_meetings/$meeting_id/instances";
    
    // This returned an array for me, but it contained UUIDs I could use for past meeting details.
    $results = $client->get($endpoint);
    
    // Now you can use your UUID to get what you need.
    $uuid = 'YOUR_NEW_UUID_HERE';
    $endpoint = "past_meetings/$uuid/participants";
    $results = $client->get($endpoint);
  • πŸ‡ΊπŸ‡ΈUnited States boinkster

    Thank you! That is super helpful. Wondering how often the '/ //' UUIDs show up... probably will need to add logic to parse them all, just in case.

  • πŸ‡ΊπŸ‡ΈUnited States joelsteidl
  • Automatically closed - issue fixed for 2 weeks with no activity.

Production build 0.71.5 2024