# Подключить приложение Zoom (/ru/docs/zm/zoom-app)

Приложение Zoom определяет, какие разрешения может запросить программа. Подключите существующее
приложение к `zm` или создайте пользовательское для своего аккаунта. Вы получите Public Client ID,
настройки возврата и разрешения для входа через браузер. Регистрация не добавляет бота на встречи
и не создаёт записи за вас. Файл учётных данных не скачивается; отдельный OAuth-клиент вне приложения не нужен: включите Public Client OAuth внутри и скопируйте ID.

## Используйте уже созданное приложение [#используйте-уже-созданное-приложение]

1. Войдите в [Zoom App Marketplace](https://marketplace.zoom.us/) и откройте **Developer → Created apps**.
   Выберите существующее приложение, не создавая копию.
2. Выберите среду: **Development** для приложения в разработке или **Production** для
   распространяемого. Учётные данные и параметры OAuth относятся к выбранной среде.
3. В **Basic Information → App Credentials** включите **Use Public Client OAuth** и скопируйте
   **Public Client ID**. Рядом могут быть обычный Client ID и Client Secret; `zm` их не использует.
4. Проверьте URL возврата, список разрешённых URL и [нужные разрешения](#what-the-manifest-asks-for) ниже.
5. Настройте ID и запустите новый вход:

```sh
zm config set zoom.clientId <public-client-id>
zm config set source api
zm login
```

Замените значение без угловых скобок. Войдите под пользователем, чьи встречи нужны, изучите
разрешения и подтвердите. Дождитесь `loggedIn: true` в терминале. Если после подтверждения он
ждёт, [завершите возврат из браузера](/llms.mdx/docs/ru/zm/sessions/content.md#finish-the-browser-callback).

### Используйте приложение WireCat или команды [#используйте-приложение-wirecat-или-команды]

Если владелец предоставил вашему пользователю Zoom доступ к приложению WireCat или команды,
используйте **Public Client ID от владельца** в тех же командах выше. Создавать другое приложение
или получать секрет не нужно. Владелец управляет URL возврата и разрешениями, а вы подтверждаете
доступ к своему аккаунту.

Приложение в разработке не становится автоматически доступным пользователям другого аккаунта Zoom.
Уточните доступ у владельца; может понадобиться администратор компании. Одна ссылка авторизации
не настраивает `zm` и не завершает его вход: запустите `zm login`, чтобы существовали текущий
обработчик возврата и ключ проверки. Если общее приложение недоступно, создайте своё ниже.

## Создайте своё приложение [#создайте-своё-приложение]

1. Войдите в [Zoom App Marketplace](https://marketplace.zoom.us/). Откройте **Developer**, затем
   в **Created apps** выберите **Develop → Build an app**, **General app** и **Create**.
   Если Developer не виден, попросите администратора выдать роль разработчика Zoom.
2. Назовите приложение, например **My meeting archive**, и выберите **User-managed**.
   Каждый пользователь подтверждает доступ к своим данным. Server-to-Server OAuth — другой
   тип приложения, который не соответствует браузерному входу этого инструмента.
3. Для начальной настройки выберите **Development**. В **Basic Information → App Credentials**
   включите **Use Public Client OAuth** и скопируйте **Public Client ID**.
4. В **OAuth Information** задайте оба поля ниже и сохраните/продолжите:

| Поле | Значение |
| --- | --- |
| OAuth Redirect URL | `https://wirecat.dev/zoom-callback` |
| OAuth Allow Lists | `https://wirecat.dev/zoom-callback` |

Используйте точный URL без дополнительного слеша в конце. `zm` отправляет именно этот адрес;
другой требует изменения кода, а не настройки. Zoom поддерживает и локальные адреса для подходящих
публичных клиентов, но этот инструмент отправляет указанный адрес.

5. Откройте **Scopes → Add Scopes**, найдите каждое имя в таблице ниже, выберите пользовательские
   разрешения и сохраните. Если Zoom запрашивает описание, поясните назначение. Добавляйте
   разрешения записей или изменения встреч только для соответствующих задач.
6. Проверьте **Local Test**, установку и требования одобрения. **Add App Now** может подтвердить
   приложение в разработке, но для сеанса инструмента вернитесь в терминал и выполните `zm login`.
   Распространение пользователям других аккаунтов требует отдельного процесса проверки Zoom.
7. Вернитесь к [первому запуску](/llms.mdx/docs/ru/zm/installation/content.md#first-run) с Public Client ID.

Официальные руководства по [созданию приложения](https://developers.zoom.us/docs/integrations/create/),
[настройкам OAuth](https://developers.zoom.us/docs/build-flow/basic-info/oauth-info/) и
[Public Client OAuth](https://developers.zoom.us/docs/integrations/oauth/#get-your-public-client-id)
объясняют поля Marketplace.

## Создать из манифеста [#создать-из-манифеста]

Необязательный [начальный манифест](https://github.com/WireCatLabs/zoom-cli/blob/main/docs/zoom-app.json)
это шаблон создания приложения, а не файл учётных данных. Он содержит адреса возврата и отключённые функции внутри клиента. Если Marketplace предлагает создание
из манифеста, сохраните JSON и импортируйте при создании General app.

**Манифест не содержит разрешений и не включает Public Client OAuth.** После импорта выполните
шаги 3–6 вручную. Успешный импорт не означает готовность к `zm login`. Создание вручную — полный
путь, если импорт недоступен.

## Разрешения для встреч организатора [#разрешения-для-встреч-организатора]

Эти разрешения добавляются вручную для загрузки встреч организатора. Scope — именованное
разрешение: оно разрешает вызов API, но не гарантирует наличие запрошенных данных.

| Разрешение | Назначение |
| --- | --- |
| `meeting:read:list_meetings` | Встречи организатора и ближайшее расписание |
| `meeting:read:list_past_instances` | Отдельные сеансы повторяющихся встреч |
| `cloud_recording:read:meeting_transcript` | Доступная расшифровка |
| `meeting:read:list_past_participants` | Участники и время входа/выхода |
| `meeting:read:summary` | Доступное резюме Zoom AI |

Настройте все пять для `zm pull`: загрузка читает эти части, даже если текста или резюме нет.
План Zoom, настройки организатора и срок хранения определяют наличие данных. Для чтения только
расписания нужен лишь список встреч.

## Разрешить архив или управление [#разрешить-архив-или-управление]

Владелец добавляет нужное разрешение в **Scopes**, сохраняет, затем пользователь повторяет
`zm login`. Выданные токены не получают права автоматически. Проверьте фактически выданные
разрешения через `zm session status --json`.

| Разрешение | Возможность |
| --- | --- |
| `cloud_recording:read:list_user_recordings` | Найти облачные записи |
| `cloud_recording:read:list_recording_files` | Посмотреть и скачать файлы записей |
| `user:read:user` | Проверить серверный сеанс через `zm session status --check` |
| `meeting:read:meeting` | Посмотреть удалённую встречу |
| `meeting:read:invitation` | Прочитать приглашение |
| `meeting:write:meeting` | Создать встречу |
| `meeting:update:meeting` | Изменить встречу |
| `meeting:delete:meeting` | Отменить встречу |

Для архива не нужны права изменения встреч. Изменения сначала показывают план; `--yes` выполняет
один запрос. После выдачи прав переходите к [архиву записей](/llms.mdx/docs/ru/zm/archive/content.md#archive-cloud-recordings)
или [управлению встречами](/llms.mdx/docs/ru/zm/remote-meetings/content.md).

## Перед первым `zm pull` [#перед-первым-zm-pull]

Расшифровка должна быть создана и сохранена в Zoom. В веб-настройках найдите **Meeting → In Meeting
(Advanced) → Meeting transcript** и включите нужные параметры создания и хранения. Администратор
может заблокировать их. В существующих аккаунтах также может быть **Allow hosts to retain transcripts**
для текста резюме встреч. См. [настройки расшифровок Zoom](https://support.zoom.com/hc/en/article?id=zm_kb\&sysparm_article=KB0085675)
для требований к плану и правам.

Для текста аудиозаписей проверьте отдельные настройки облачной записи. Запись, живые субтитры
и сохранённая расшифровка — разные результаты. Включение настройки сегодня не восстанавливает
текст, который не сохранялся или был удалён по сроку.

API читает встречи авторизованного организатора. Если вы только участвовали, попросите файл
у организатора или скачайте, если разрешено, затем [импортируйте VTT](/llms.mdx/docs/ru/zm/archive/content.md#downloaded-transcripts).
Само участие не гарантирует доступ к скачиванию.

## Корпоративный аккаунт [#корпоративный-аккаунт]

Попросите администратора разрешить создание/установку приложения и нужные права. Если API
недоступен, разрешённые файлы можно импортировать без приложения. После входа
[загрузите первый период](/llms.mdx/docs/ru/zm/installation/content.md#first-run) и проверьте, что реально получено.
