> This page is for Платформа, version Предыдущая версия.
> For other versions, use one of these documentation indexes:
> - V4 (default): https://next.developer.frame.io/platform/v4/llms.txt
> - Версия 4 экспериментальная: https://next.developer.frame.io/platform/v4-experimental/llms.txt
> - Предыдущая версия: https://next.developer.frame.io/platform/v2/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://next.developer.frame.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://next.developer.frame.io/_mcp/server.

# Управление пользователями

## Обзор

В этом руководстве рассказывается о базовом управлении пользователями через API-интерфейс Frame.io. Предполагается, что читающий пользователь уже настроил [аутентификацию](/getting-started/authentication) через OAuth2.0 или с помощью токена разработчика.

### Основные концепции




Помимо специфических нюансов различных ролей и разрешений участников группы есть два важных ключевых аспекта для понимания при управлении пользователями через API-интерфейс Frame.io:




1. **Участники команды принадлежат командам** и имеют доступ ко всем не частным проектам в этих командах. Менеджеры и администраторы команд являются расширениями роли участника команды.
2. **Соавтор проекта принадлежит одному проекту**. В зависимости от того, как настроен проект, он может или не может создавать презентации, загружать ресурсы или приглашать других соавторов.

Для получения дополнительной информации обратитесь к справочной документации по [сравнению участников команды и соавторов](https://support.frame.io/getting-started/sharing-with-your-team-or-clients/difference-between-team-members-vs-collaborators) и по [ролям управления учетными записями](https://support.frame.io/enterprise-accounts/enterprise-account-management-roles).

### Как пользователи присоединяются к учетным записям





В общем, новые пользователи приглашаются текущими пользователями либо напрямую, либо через уникальный URL-адрес для присоединения к проекту. Участники команды также могут:



1. Добавлять себя к не частным проектам в общедоступных командах своей учетной записи.
2. Добавлять себя к общедоступным командам в их учетной записи.
3. Запрашивать присоединение к частным командам в своей учетной записи.





Во всех случаях действия по присоединению проходят через серию логических шагов, включающих проверку предыдущего участия, создание записей «в ожидании» и отправку приглашений или электронных писем с запросами на присоединение при необходимости.





Хорошо, что вся эта логика абстрагирована API-интерфейсом Frame.io. Чтобы добавить кого-то в проект, используйте маршруты соавтора. Чтобы пригласить кого-то в команду, используйте маршруты участника команды.





### Необходимые области доступа




| Область доступа | Причина |
| ---------- | ---------- |
| **Команды:** обновление | Добавление и удаление участников команды. |
| **Проекты:** обновление | Добавление и удаление соавторов проекта. |




## Управление участниками команды




### Добавление участников команды




Для добавления нового участника в команду требуется:



1. `ИД` целевой команды.
2. Адрес электронной почты целевого пользователя.

Затем просто выполните авторизованный запрос `POST` к `https://api.frame.io/v2/teams/:id/members` с адресом электронной почты целевого пользователя в теле полезной нагрузки следующим образом:

```json
{
    "email": "user@example.com"
}
```

**Если приглашенный пользователь уже является участником команды в вашей организации**, ответ API-интерфейса укажет на это:

```json
{
    "_type": "team_member",
    "id": "<team-member-record-id>",
    "role": "member",
    "team_id": "<team-id>",
    "user_id": "<user-id>"
}
```

**Если приглашенный пользователь еще не состоит в вашей организации**, ваш запрос запустит процесс приглашения, и ответ API-интерфейса будет выглядеть примерно так:

```json
{
    "_type": "pending_team_member",
    "email": "user@example.com",
    "id": "<oending-team-member-record-id>",
    "role": "member",
    "team_id": "<team-id>
}
```

**Примечание**. Поскольку пользователь еще не создан или не распознан, в ответе `pending_team_member` не будет сопоставимого `user_id`.

### Удаление участников команды




Для удаления участника из команды требуется:



1. `ИД` целевой команды.
2. Адрес электронной почты целевого пользователя.

Здесь вы будете выполнять вызов `DELETE` к тому же URL-адресу, который используется для добавления участника команды, и передавать специальную строку запроса: `DELETE` [`https://api.frame.io/v2/teams/:id/members/_?email=user@example.com`](ref:post_teams-teamid-members)
<Info title="Что такое шаблон включения?">
  **Обратите внимание** на конструкцию `/_?email=` — это специальный шаблон в API-интерфейсе Frame.io, называемый шаблоном включения, который позволяет запрашивать дополнительные данные в запросе API (в данном случае адрес электронной почты пользователя).
</Info>
 При выполнении вызова API-интерфейс вернет аналогичную полезную нагрузку для добавления участника команды. Если участник команды удаляется впервые, вы увидите атрибут `updated_at`, соответствующий времени вызова. Если участник команды удален ранее, эта метка времени не обновится (т. е. она будет отражать время, когда участник команды удален изначально).

```json
{
    "_type": "team_member",
    "id": "<team-member-record-id>",
    "role": "member",
    "team_id": "<team-id>",
    "user_id": "<user-id>",
    "updated_at": "<timestamp>"
}
```





Попытки удалить участников команды, которые не существуют или никогда не были связаны с командой, приведут к ошибкам 404.





## Управление соавторами проекта




### Добавление соавторов проекта




Управление соавторами очень похоже на управление участниками команды. Для добавления нового соавтора в команду потребуется:




1. `ИД` целевого проекта.
2. Адрес электронной почты целевого пользователя.

Затем выполните авторизованный запрос `POST` к [ `https://api.frame.io/v2/projects/:id/collaborators`](ref:post_projects-projectid-collaborators) с адресом электронной почты целевого пользователя в теле полезной нагрузки:

```json
{
    "email": "user@example.com"
}
```

**Если приглашенный пользователь распознан** и роль соавтора может быть назначена мгновенно, ответ API-интерфейса укажет на это и вернет полный объект пользователя:

```json
{
    "_type": "collaborator",
    "creator_id": "<inviting-user-id>",
    "id": "<collaborator-record-id>",
    "project_id": "<project-id>",
    "user": {
        "_type": "user",
       <...>
    },
    "user_id": "<user-id>"
}
```




<Info title="Участие в команде">
  


Если пользователь уже является участником команды в вашей организации, но не является участником целевого проекта, вы все равно можете использовать маршрут соавтора, и API-интерфейс ответит, как указано выше. В фоне участник команды будет добавлен в ваш целевой проект и останется участником команды. Другими словами, вы не можете случайно «понизить» участников команды с помощью этого маршрута.



</Info>
 **Если пользователь, которого вы пригласили, новый в вашей организации**, ваш запрос запустит процесс приглашения, и API-интерфейс ответит записью `pending_collaborator`, как показано ниже:

```json
{
    "_type": "pending_collaborator",
    "email": "user@example.com",
    "id": "<pending-collaborator-record-id>",
    "project_id": "<project-id>"
}
```





### Удаление соавторов проекта

**Примечание.** Этот процесс принципиально идентичен тому, как обрабатываются участники команды (выше).

Для удаления соавтора из проекта требуется:



1. `ИД` целевого проекта.
2. Адрес электронной почты целевого пользователя.

Здесь вы будете выполнять вызов `DELETE` к тому же URL-адресу, который используется для добавления соавтора, и передавать специальную строку запроса. `DELETE` [`https://api.frame.io/v2/projects/:id/collaborators/_?email=user@example.com`](ref:post_teams-teamid-members)

При выполнении вызова API-интерфейс вернет аналогичную полезную нагрузку для добавления соавтора проекта.





```json
{
    "_type": "collaborator",
    "creator_id": "<inviting-user-id>",
    "id": "<collaborator-record-id>",
    "project_id": "<project-id>",
    "user": {
        "_type": "user",
       <...>
    },
    "user_id": "<user-id>"
}
```





Попытки удалить соавторов, которые не существуют или никогда не были связаны с проектом приведут к ошибкам 404.




<Warning title="Предупреждение! Удаление соавтора не является идемпотентным.">
  


В отличие от удаления участника команды, попытки удалить уже удаленных соавторов приведут к возникновению ошибок 404.



</Warning>