Allright, here’s a 1st feedback on what has been clarified and understood.
TL;DR
If you’re interacting with (non-recurring) meetings that have multiple recordings, don’t just think you can easily use “Get/Delete meeting recordings” endpoints. You can’t.
First, misconceptions/mistakes:
- I misinterpreted our code, and thought it was using “Get meeting recordings” to get the recording list. It’s actually using the “List all recordings” endpoint
- I assumed we weren’t concerned by “meeting instances” and associated UUIDs, based on those details that only cite “recurring meetings” as example situations where meeting instances would be generated
- Overall, I inconsciously assumed way too many things from the endpoint’s names
Despite using scheduled, non recurring meetings, it appears that our user behavior still provokes generation of multiple meeting instances, spreading recordings across those. This prevents an “easy” use of “Get/delete meeting recordings”, as they will only return/delete the latest recording, tied to the latest meeting instance, when using the meeting ID.
As working with UUIDs will also return only one recording set, I wonder why the endpoints are using the plural for “recordings”, and why there is a “200” status on " Delete meeting recordings" when the API only ever responds with 204.
Anyway, main lessons for me here are:
- If you have multiple recordings, assume they are each associated to their own meeting instance
- Don’t assume endpoints will have a global consistent behavior when using a meeting ID/number
Typically, if “List all recordings” (that would be more aptly named something like “List user recordings”) is given a meeting ID and a sufficiently old start date, it will return all recordings for that ID, no matter the instances.
Then, doc/API inconsistencies (some already mentioned in previous messages):
- The “Delete” recording endpoints docs are both insuficient/inadequate, incomplete, wrong/contradictory and obsolete
- The “Get meeting recordings” docs are wrong/contradictory - Says it will " Returns all of a meeting’s recordings." and will only ever do that if there is only a single recording involved
- Inconsistent use of “Field” parameters, mixing/confusing id, uuid, meeting_id , further misleading when considering “Path” parameters (more on that below)
So, as already pointed, various endpoints request to add a {meetingId} in the request path, when they really need you to provide a UUID (if a meeting ID is provided, it is just “translated” to the UUID of the latest instance). You’ll also have to conditionally (why) “double encode” said UUID - up to you to figure out what that means and how to do it programatically (tip: you’ll have a “urlencode” method for that in some languages).
Then, if/when you get a response, you’ll have to decypher in context what the fields actually mean.
Say you “Get meeting recordings” and want to do something with its “recording_files”: Can you just take its “meeting_id” and assume it actually is a meeting ID ? No, because in practice, what is returned here is actually a meeting instance’s UUID.
So from there, don’t use that “meeting_id” for use with " List meeting polls" as {meetingId}, because you’ll be giving a UUID to an endpoint actually requiring a meeting ID.
However, if you want to " Get past meeting participants" and pass that “meeting_id” field as {meetingId} in its path, it will be ok, as this {meetingId} is actually expecting a UUID.
Same if you want to “Recover meeting recordings”, you’ll be able to use that “meeting_id” to fill the {meetingUUID} path placeholder. Fun, eh ?
So, to summarize, an actual meeting ID/number may be stored/found in fields named “id” , but never in “meeting_id” for responses. They will most likely be successfully used in paths mentioning {meetingId}, oftentimes by being translated to the latest UUID of that meeting ID
An actual meeting UUID may be stored/found in fields named “uuid” and “meeting_id”. They will most likely be successfully used in paths mentioning {meetingId} that actually require a UUID, and paths {meetingUUID}
(temporary) Conclusion
As soon as you have more than 1 recording on a meeting, you can’t just hope to simply use “Get/Delete meeting recordings” endpoints to interact with them.
You either have to:
- resort to " List all recordings", cycle through the recordings and use the meeting_ids_that_actually_are_uuids to delete them one by one
- “List past meeting instances”, try and “Delete meeting recordings” on each uuid and maybe do one more round with the meeting ID to handle the current/latest instance.