раздел 05
Шпаргалка
Всё главное на одной странице.
Поток скачивания
1. access_token <- Server-to-Server OAuth (account_id + client_id + client_secret)
2. список записей <- GET /v2/users/{userId}/recordings?from=...&to=...
3. для каждой meeting -> recording_files[] -> взять download_url
4. скачать файл <- download_url + токен (?access_token= или заголовок Authorization)
5. проверить <- размер на диске == file_size
6. сложить <- диск сервера или S3
7. (опц.) удалить <- API удаления записей встречи, только после проверки
Автоматический вариант: вместо шагов 1-3 ловите webhook recording.completed, берёте download_url и download_token из payload, дальше шаги 4-7.
Основные эндпоинты
| Что | Запрос |
| --- | --- |
| Получить токен | POST https://zoom.us/oauth/token?grant_type=account_credentials&account_id=... |
| Список записей пользователя | GET https://api.zoom.us/v2/users/{userId}/recordings |
| Записи одной встречи | GET https://api.zoom.us/v2/meetings/{meetingId}/recordings |
| Скачать файл | GET {download_url} с токеном (заголовок или ?access_token=) |
Параметры списка: from, to (формат YYYY-MM-DD), page_size, next_page_token.
Чек-лист
- [ ] Завёл приложение Server-to-Server OAuth, есть
account_id,client_id,client_secret. - [ ] Выдал scope на чтение записей (cloud recording).
- [ ] Получаю
access_tokenи обновляю его по истечении (около часа). - [ ] Запрашиваю список за период, прохожу все страницы по
next_page_token. - [ ] Достаю
download_urlнужных файлов (MP4 / M4A / TRANSCRIPT). - [ ] Качаю с
-L(curl) илиstream=True(Python), токен передаю безопасно. - [ ] Сверяю размер скачанного с
file_size. - [ ] Складываю на диск или в S3 с понятным именем (дата + тема).
- [ ] Для автоматики - подписан на webhook
recording.completed. - [ ] Удаляю из Zoom только после проверки бэкапа (сначала в корзину).
Глоссарий
| Термин | Что это |
| --- | --- |
| recording_files | Массив файлов одной встречи: видео, аудио, субтитры, чат. |
| download_url | Ссылка на скачивание конкретного файла записи. Требует токен, секрет. |
| download_token | Короткоживущий токен из webhook для скачивания файлов события. |
| recording.completed | Webhook-событие: облачная запись готова к скачиванию. |
| next_page_token | Токен следующей страницы списка записей при пагинации. |
| file_type | Тип файла: MP4 (видео), M4A (аудио), TRANSCRIPT (субтитры), CHAT, CC. |
| recording_type | Вид записи: ракурс экрана, gallery_view, audio_only и т.д. |
Куда дальше
- Курс Zoom API - приложение Server-to-Server OAuth, scopes, эндпоинт удаления записей.
- Курс Серверы - куда складывать: диск сервера и объектное хранилище S3.
- Курс Работа с API - как вообще устроены запросы, токены и пагинация.