раздел 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 - как вообще устроены запросы, токены и пагинация.