> This page is for Платформа, version V4 (default).
> 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.

# Справочник по SDK для Python

### Установка

```curl
pip install frameio
```

---

### Использование

Создайте экземпляр клиента и используйте его следующим образом.

```python
from frameio import (
    Frameio,
    SelectDefinitionParamsFieldConfiguration,
    SelectDefinitionParamsFieldConfigurationOptionsItem,
)
from frameio.metadata_fields import CreateFieldDefinitionParamsData_Select

client = Frameio(
    token="YOUR_TOKEN",
)
client.metadata_fields.metadata_field_definitions_create(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=CreateFieldDefinitionParamsData_Select(
        field_configuration=SelectDefinitionParamsFieldConfiguration(
            enable_add_new=False,
            options=[
                SelectDefinitionParamsFieldConfigurationOptionsItem(
                    display_name="Option 1",
                ),
                SelectDefinitionParamsFieldConfigurationOptionsItem(
                    display_name="Option 2",
                ),
            ],
        ),
        name="Fields definition name",
    ),
)
```

---

### Асинхронный клиент

SDK также экспортирует асинхронный клиент, благодаря чему вы можете выполнять неблокирующие вызовы к нашему API-интерфейсу. Обратите внимание: если вы создаете асинхронный экземпляр httpx для передачи в этот клиент, используйте httpx.AsyncClient() вместо httpx.Client() (например, для параметра httpx\_client данного клиента).

```python
import asyncio

from frameio import (
    AsyncFrameio,
    SelectDefinitionParamsFieldConfiguration,
    SelectDefinitionParamsFieldConfigurationOptionsItem,
)
from frameio.metadata_fields import CreateFieldDefinitionParamsData_Select

client = AsyncFrameio(
    token="YOUR_TOKEN",
)


async def main() -> None:
    await client.metadata_fields.metadata_field_definitions_create(
        account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
        data=CreateFieldDefinitionParamsData_Select(
            field_configuration=SelectDefinitionParamsFieldConfiguration(
                enable_add_new=False,
                options=[
                    SelectDefinitionParamsFieldConfigurationOptionsItem(
                        display_name="Option 1",
                    ),
                    SelectDefinitionParamsFieldConfigurationOptionsItem(
                        display_name="Option 2",
                    ),
                ],
            ),
            name="Fields definition name",
        ),
    )


asyncio.run(main())
```

---

### Обработка исключений

Если API-интерфейс возвращает код состояния ошибки (ответ 4xx или 5xx), будет создано исключение, являющееся подклассом следующей ошибки.

```python
from frameio.core.api_error import ApiError

try:
    client.metadata_fields.metadata_field_definitions_create(...)
except ApiError as e:
    print(e.status_code)
    print(e.body)
```

---

### Разбивка на страницы

Запросы с разбивкой на страницы будут возвращать объекты SyncPager или AsyncPager, которые можно использовать в качестве генераторов для базовых объектов.

```python
from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
response = client.project_permissions.index(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    project_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    page_size=10,
    include_total_count=False,
)
for item in response:
    yield item
# alternatively, you can paginate page-by-page
for page in response.iter_pages():
    yield page
```

---

### Дополнительные возможности

#### Доступ к необработанным данным ответа

SDK предоставляет доступ к необработанным данным ответа, включая заголовки, с помощью свойства .with\_raw\_response. Свойство .with\_raw\_response возвращает «необработанный» клиент, который можно использовать для доступа к атрибутам .headers и .data.

```python
from frameio import Frameio

client = Frameio(
    ...,
)
response = (
    client.metadata_fields.with_raw_response.metadata_field_definitions_create(
        ...
    )
)
print(response.headers)  # access the response headers
print(response.data)  # access the underlying object
pager = client.project_permissions.index(...)
print(pager.response.headers)  # access the response headers for the first page
for item in pager:
    print(item)  # access the underlying object(s)
for page in pager.iter_pages():
    print(page.response.headers)  # access the response headers for each page
    for item in page:
        print(item)  # access the underlying object(s)
```

---

#### Повторные попытки

В SDK предусмотрен автоматический повтор попыток выполнить запрос с экспоненциальной задержкой. Повторные попытки будут выполняться до тех пор, пока запрос считается пригодным для повтора и количество попыток не превысит установленный лимит (по умолчанию: 2).

Запрос считается пригодным для повтора, если сервер возвращает любой из следующих кодов состояния HTTP:

* 408 (истекло время ожидания)
* 429 (слишком много запросов)
* 5XX (внутренние ошибки сервера)

\
&#x20;Используйте параметр запроса `max_retries`, чтобы настроить это поведение.

```python
client.metadata_fields.metadata_field_definitions_create(..., request_options={
    "max_retries": 1
})
```

---

#### Время ожидания

По умолчанию в SDK установлен лимит времени ожидания 60 секунд. Вы можете настроить этот лимит с помощью параметра времени ожидания как на уровне клиента, так и на уровне запроса.

```python
from frameio import Frameio

client = Frameio(
    ...,
    timeout=20.0,
)


# Override timeout for a specific method
client.metadata_fields.metadata_field_definitions_create(..., request_options={
    "timeout_in_seconds": 1
})
```

---

#### Пользовательский клиент

Вы можете переопределить клиент httpx, чтобы настроить его под свои задачи. Среди распространенных сценариев использования — поддержка прокси и транспортов.

```python
import httpx
from frameio import Frameio

client = Frameio(
    ...,
    httpx_client=httpx.Client(
        proxy="http://my.test.proxy.example.com",
        transport=httpx.HTTPTransport(local_address="0.0.0.0"),
    ),
)
```

---

### Справочник

#### Разрешения учетной записи

#### client.account\_permissions.index(...) -> AsyncPager\[AccountUserRole, AccountUserRolesResponse]

Создает список ролей пользователя для указанной учетной записи.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
response = client.account_permissions.index(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include_deactivated=True,
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)
for item in response:
    yield item
# alternatively, you can paginate page-by-page
for page in response.iter_pages():
    yield page

```

**Параметры**

`account_id`: Uuid —

`include_deactivated`: typing.Optional\[bool] — поддерживает включение деактивированных пользователей в ответ. По умолчанию: false.

`after`: typing.Optional\[RequestAfterOpaqueCursor]

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: typing.Optional\[RequestPageSize] —

`include_total_count`: typing.Optional\[IncludeTotalCount] —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### Учетные записи

#### client.accounts.index(...) -> AsyncPager\[Account, AccountsResponse]

Создает список учетных записей для текущего пользователя.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
response = client.accounts.index(
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)
for item in response:
    yield item
# alternatively, you can paginate page-by-page
for page in response.iter_pages():
    yield page
```

**Параметры**

`after`: typing.Optional\[RequestAfterOpaqueCursor]

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: typing.Optional\[RequestPageSize] —

`include_total_count`: typing.Optional\[IncludeTotalCount] —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.accounts.auditlog\_index(...) -> AsyncPager\[AuditLog, AuditLogsWithIncludesResponse]

Создает список журналов аудита с возможностями фильтрации через параметры запроса.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
response = client.accounts.auditlog_index(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include="user",
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
    api_version="4.0",
)
for item in response:
    yield item
# alternatively, you can paginate page-by-page
for page in response.iter_pages():
    yield page
```

**Параметры**

`account_id`: `Uuid` —

`api_version`: `typing.Literal["4.0"]` —

`include`: `typing.Optional[typing.Literal["user"]]` —

`filters`: `typing.Optional[Filters]` —

`after`: `typing.Optional[RequestAfterOpaqueCursor]`

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: `typing.Optional[RequestPageSize]` —

`include_total_count`: `typing.Optional[IncludeTotalCount]` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### Аутентификация

#### frameio.auth.ServerToServerAuth(\*, client\_id, client\_secret, ...)

Выполняет аутентификацию с использованием типа разрешения client\_credentials протокола OAuth 2.0. Этот процесс не подразумевает участия пользователя и не возвращает токен обновления. Когда срок действия токена доступа истекает, SDK автоматически запрашивает новый, используя учетные данные клиента. В асинхронном коде следует использовать класс `AsyncServerToServerAuth`.

**`usage`**

```python usage

from frameio import Frameio
from frameio.auth import ServerToServerAuth

auth = ServerToServerAuth(client_id="YOUR_CLIENT_ID", client_secret="YOUR_CLIENT_SECRET")
client = Frameio(token=auth.get_token)
```

**Параметры**

`client_id`: `str` — идентификатор клиента Oauth в Adobe IMS.

`client_secret`: `str` — секретный ключ клиента Oauth в Adobe IMS.

`scopes`: `str` — разделенный пробелами список областей доступа (OAuth 2.0 RFC 6749). По умолчанию используется `openid AdobeID frame.s2s.all`.

`ims_base_url`: `str` — базовый URL-адрес сервиса IMS для работы в тестовых/альтернативных средах. По умолчанию указывает на производственную среду.

`http_client`: `typing.Optional[httpx.Client]` — необязательный клиент httpx.Client для прокси, TLS или пула подключений.

`on_token_refreshed`: `typing.Optional[typing.Callable[[dict[str, Any]], None]]` — необязательная функция обратного вызова, которая срабатывает после каждого запроса токена.

`timeout`: `float` — время ожидания запроса HTTP в секундах. По умолчанию: 30.

`max_retries`: `int` — максимальное количество повторных попыток при временных сбоях. По умолчанию: 2.

`refresh_buffer`: `int` — количество секунд до истечения срока действия токена, при котором запускается упреждающее обновление. По умолчанию: 60. **Методы** `get_token() -&gt; str` — возвращает действующий токен доступа, при необходимости выполняя его обновление. Передавайте в SDK ссылку на метод (не вызов): `Frameio(token=auth.get_token)`. `authenticate() -&gt; dict[str, Any]` — выполняет явный запрос нового токена доступа. Возвращает словарь с ответом сервера, содержащий `access_token`, `expires_in` и другие параметры. `revoke() -&gt; None` — аннулирует оба токена на стороне сервера и очищает локальные данные о состоянии токенов. `export_tokens() -&gt; dict[str, Any]` — экспортирует текущее состояние токенов для последующего сохранения. `import_tokens(data: dict[str, Any]) -&gt; None` — восстанавливает состояние токенов из ранее экспортированного словаря.

#### frameio.auth.WebAppAuth(\*, client\_id, client\_secret, redirect\_uri, ...)

Выполняет аутентификацию с использованием типа разрешения authorization\_code протокола OAuth 2.0. Используйте этот процесс для серверных приложений, которые могут безопасно хранить секретный ключ клиента. В асинхронном коде следует использовать класс `AsyncWebAppAuth`.

**`usage`**

```python usage

import secrets
from frameio import Frameio
from frameio.auth import WebAppAuth

auth = WebAppAuth(
    client_id="YOUR_CLIENT_ID",
    client_secret="YOUR_CLIENT_SECRET",
    redirect_uri="https://myapp.com/callback",
)
url = auth.get_authorization_url(state=secrets.token_urlsafe(32))
# redirect user to url ...
auth.exchange_code(code="CODE_FROM_CALLBACK")
client = Frameio(token=auth.get_token)
```

**Параметры**

`client_id`: `str` — идентификатор клиента Oauth в Adobe IMS.

`client_secret`: `str` — секретный ключ клиента Oauth в Adobe IMS.

`redirect_uri`: `str` — зарегистрированный URI перенаправления.

`scopes`: `str` — разделенный пробелами список областей доступа (OAuth 2.0 RFC 6749).

`ims_base_url`: `str` — базовый URL-адрес сервиса IMS для работы в тестовых/альтернативных средах. По умолчанию указывает на производственную среду.

`http_client`: `typing.Optional[httpx.Client]` — необязательный клиент httpx.Client для прокси, TLS или пула подключений.

`on_token_refreshed`: `typing.Optional[typing.Callable[[dict[str, Any]], None]]` — необязательная функция обратного вызова, которая срабатывает после каждого обновления токена.

`timeout`: `float` — время ожидания запроса HTTP в секундах. По умолчанию: 30.

`max_retries`: `int` — максимальное количество повторных попыток при временных сбоях. По умолчанию: 2.

`refresh_buffer`: `int` — количество секунд до истечения срока действия токена, при котором запускается упреждающее обновление. По умолчанию: 60. **Методы** `get_token() -&gt; str` — возвращает действующий токен доступа, при необходимости выполняя его обновление. Передавайте в SDK ссылку на метод: `Frameio(token=auth.get_token)`. `get_authorization_url(state: str) -&gt; str` — формирует URL-адрес авторизации Adobe IMS. Передавайте непрозрачное значение CSRF/state, которое будет возвращаться обратно без изменений. `exchange_code(code: str) -&gt; dict[str, Any]` — обменивает код авторизации на токены доступа и обновления. `refresh() -&gt; dict[str, Any]` — вручную запускает обновление токенов. `revoke() -&gt; None` — аннулирует оба токена на стороне сервера и очищает локальные данные о состоянии токенов. `export_tokens() -&gt; dict[str, Any]` — экспортирует текущее состояние токенов для последующего сохранения. `import_tokens(data: dict[str, Any]) -&gt; None` — восстанавливает состояние токенов из ранее экспортированного словаря.

#### frameio.auth.SPAAuth(\*, client\_id, redirect\_uri, ...)

Выполняет аутентификацию с использованием комбинации authorization\_code + PKCE (без секретного ключа клиента). Используйте этот процесс для браузерных или встроенных приложений, которые не могут безопасно хранить секретный ключ клиента. В асинхронном коде следует использовать класс `AsyncSPAAuth`.

**`usage`**

```python usage

import secrets
from frameio import Frameio
from frameio.auth import SPAAuth

auth = SPAAuth(client_id="YOUR_CLIENT_ID", redirect_uri="https://myapp.com/cb")
result = auth.get_authorization_url(state=secrets.token_urlsafe(32))
# redirect user to result.url, store result.code_verifier
auth.exchange_code(code="CODE_FROM_CALLBACK", code_verifier=result.code_verifier)
client = Frameio(token=auth.get_token)
```

**Параметры**

`client_id`: `str` — идентификатор клиента Oauth в Adobe IMS.

`redirect_uri`: `str` — зарегистрированный URI перенаправления.

`scopes`: `str` — разделенный пробелами список областей доступа (OAuth 2.0 RFC 6749).

`ims_base_url`: `str` — базовый URL-адрес сервиса IMS для работы в тестовых/альтернативных средах. По умолчанию указывает на производственную среду.

`http_client`: `typing.Optional[httpx.Client]` — необязательный клиент httpx.Client для прокси, TLS или пула подключений.

`on_token_refreshed`: `typing.Optional[typing.Callable[[dict[str, Any]], None]]` — необязательная функция обратного вызова, которая срабатывает после каждого обновления токена.

`timeout`: `float` — время ожидания запроса HTTP в секундах. По умолчанию: 30.

`max_retries`: `int` — максимальное количество повторных попыток при временных сбоях. По умолчанию: 2.

`refresh_buffer`: `int` — количество секунд до истечения срока действия токена, при котором запускается упреждающее обновление. По умолчанию: 60. **Методы** `get_token() -&gt; str` — возвращает действующий токен доступа, при необходимости выполняя его обновление. Передавайте в SDK ссылку на метод: `Frameio(token=auth.get_token)`. `get_authorization_url(state: str) -&gt; AuthorizationUrlResult` — формирует URL-адрес авторизации Adobe IMS с использованием механизма PKCE challenge. Возвращает объект `AuthorizationUrlResult` с атрибутами `url` и `code_verifier`. `exchange_code(code: str, code_verifier: str) -&gt; dict[str, Any]` — обменивает код авторизации совместно с проверочным ключом PKCE на токены. `refresh() -&gt; dict[str, Any]` — вручную запускает обновление токенов. `revoke() -&gt; None` — аннулирует оба токена на стороне сервера и очищает локальные данные о состоянии токенов. `export_tokens() -&gt; dict[str, Any]` — экспортирует текущее состояние токенов для последующего сохранения. `import_tokens(data: dict[str, Any]) -&gt; None` — восстанавливает состояние токенов из ранее экспортированного словаря.

#### frameio.auth.AuthorizationUrlResult

Неизменяемый класс данных, возвращаемый методами `SPAAuth.get_authorization_url()` и `AsyncSPAAuth.get_authorization_url()`. Содержит URL-адрес авторизации и проверочный ключ PKCE. **Атрибуты** `url`: `str` — полный URL-адрес авторизации, на который необходимо перенаправить пользователя. `code_verifier`: `str` — проверочный ключ PKCE, который необходимо сохранить и затем передать в метод `exchange_code()`.

#### frameio.auth.close\_clients() / aclose\_clients()

Закрывает HTTP-клиенты уровня модуля, используемые модулем аутентификации. Вызывайте метод `close_clients()` в синхронном коде или `await aclose_clients()` в асинхронном при завершении работы приложения, чтобы освободить подключения.

**`usage`**

```python usage

from frameio.auth import close_clients

# During application shutdown
close_clients()
```

#### Исключения аутентификации

Все исключения аутентификации наследуются от `FrameioAuthError`.

| Исключение            | Описание                                                                                             |
| --------------------- | ---------------------------------------------------------------------------------------------------- |
| `FrameioAuthError`    | Базовое исключение для всех ошибок модуля `frameio.auth`.                                            |
| `AuthenticationError` | Сбой обмена или обновления токена. Содержит атрибуты `error_code` и `error_description`.             |
| `TokenExpiredError`   | Истек срок действия токена обновления; требуется повторная аутентификация.                           |
| `ConfigurationError`  | Отсутствуют или являются недопустимыми обязательные параметры конфигурации.                          |
| `NetworkError`        | Сбой сетевого запроса (превышение времени ожидания, ошибка подключения и т. д.).                     |
| `RateLimitError`      | API-интерфейс вернул ошибку 429, и исчерпан лимит повторных попыток. Содержит атрибут `retry_after`. |
| `PKCEError`           | Сбой проверки PKCE.                                                                                  |

#### Коллекции

#### client.collections.index(...) -> AsyncHttpResponse\[CollectionsResponse]

Создает список коллекций для проекта.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.collections.index(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    project_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include="creator,project",
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)
```

**Параметры**

`account_id`: `Uuid` —

`project_id`: `Uuid` —

`include`: `typing.Optional[CollectionInclude]` —

`after`: `typing.Optional[RequestAfterOpaqueCursor]`

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: `typing.Optional[RequestPageSize]` —

`include_total_count`: `typing.Optional[IncludeTotalCount]` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.collections.show(...) -> AsyncHttpResponse\[CollectionResponse]

Показывает сведения о коллекции.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.collections.show(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    collection_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include="creator,project",
)
```

**Параметры**

`account_id`: `Uuid` —

`collection_id`: `Uuid` —

`include`: `typing.Optional[CollectionInclude]` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### Комментарии

#### client.comments.show(...) -> AsyncHttpResponse\[CommentWithIncludesResponse]

Показывает отдельный комментарий к файлу.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.comments.show(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    comment_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include="owner",
)
```

**Параметры**

`account_id`: Uuid —

`comment_id`: Uuid —

`include`: typing.Optional\[CommentsShowRequestInclude] —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.comments.delete(...) -> AsyncHttpResponse\[None]

Удаляет комментарий из ресурса.

Лимиты запросов: 60 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.comments.delete(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    comment_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
)
```

**Параметры**

`account_id`: Uuid —

`comment_id`: Uuid —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.comments.update(...) -> AsyncHttpResponse\[CommentResponse]

Обновляет комментарий к указанному ресурсу.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.comments import UpdateCommentParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.comments.update(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    comment_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    timestamp_as_timecode=True,
    data=UpdateCommentParamsData(
        annotation='[{"tool":"rect","color":"#F22237","size":8,"x":0.277726001863933,"y":0.12909555568499534,"w":0.3153168321877913,"h":0.5308131407269339,"ix":0.277726001863933,"iy":0.12909555568499534,"radius":8}]',
        completed=False,
        page=4,
        text="This is great!",
    ),
)
```

**Параметры**

`account_id`: Uuid —

`comment_id`: Uuid —

`data`: UpdateCommentParamsData

`timestamp_as_timecode`: typing.Optional\[bool] —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.comments.index(...) -> AsyncPager\[CommentWithIncludes, CommentsWithIncludesResponse]

Создает список комментариев к указанному ресурсу.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
response = client.comments.index(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    file_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include="owner",
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)
for item in response:
    yield item
# alternatively, you can paginate page-by-page
for page in response.iter_pages():
    yield page
```

**Параметры**

`account_id`: Uuid —

`file_id`: Uuid —

`include`: typing.Optional\[CommentInclude] —

`after`: typing.Optional\[RequestAfterOpaqueCursor]

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: typing.Optional\[RequestPageSize] —

`include_total_count`: typing.Optional\[IncludeTotalCount] —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.comments.create(...) -> AsyncHttpResponse\[CommentResponse]

Создает комментарий к файлу.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.comments import CreateCommentParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.comments.create(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    file_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    timestamp_as_timecode=True,
    data=CreateCommentParamsData(
        annotation='[{"tool":"rect","color":"#F22237","size":8,"x":0.277726001863933,"y":0.12909555568499534,"w":0.3153168321877913,"h":0.5308131407269339,"ix":0.277726001863933,"iy":0.12909555568499534,"radius":8}]',
        completed=False,
        page=4,
        text="This is great!",
        timestamp="00:00:02:12",
    ),
)
```

**Параметры**

`account_id`: Uuid —

`file_id`: Uuid —

`data`: CreateCommentParamsData

`timestamp_as_timecode`: typing.Optional\[bool] —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.comments.create\_attachment(...) -> AsyncHttpResponse\[CommentAttachmentResponse]

Создает вложение к существующему комментарию.

Лимиты запросов: 60 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import AttachmentInput, Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.comments.create_attachment(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    comment_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=AttachmentInput(
        file_size=1024000,
        media_type="image/png",
        name="screenshot.png",
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`comment_id`: `Uuid` —

`data`: `AttachmentInput`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.comments.delete\_attachment(...) -> AsyncHttpResponse\[None]

Удаляет вложение из комментария.

Лимиты запросов: 60 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.comments.delete_attachment(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    comment_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    attachment_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
)
```

**Параметры**

`account_id`: `Uuid` —

`comment_id`: `Uuid` —

`attachment_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### Пользовательские действия

#### client.custom\_actions.actions\_index(...) -> AsyncHttpResponse\[ActionsWithIncludesResponse]

Создает список действий в указанной рабочей среде.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.custom_actions.actions_index(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include="creator",
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)
```

**Параметры**

`account_id`: `Uuid` —

`workspace_id`: `Uuid` —

`include`: `typing.Optional[typing.Literal["creator"]]` —

`after`: `typing.Optional[RequestAfterOpaqueCursor]`

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: `typing.Optional[RequestPageSize]` —

`include_total_count`: `typing.Optional[IncludeTotalCount]` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.custom\_actions.actions\_show(...) -> AsyncHttpResponse\[ActionWithIncludesResponse]

Выводит сведения о пользовательском действии.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.custom_actions.actions_show(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    action_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include="creator",
)
```

**Параметры**

`account_id`: `Uuid` —

`action_id`: `Uuid` —

`include`: `typing.Optional[typing.Literal["creator"]]` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.custom\_actions.actions\_create(...) -> AsyncHttpResponse\[ActionCreateResponse]

Создает пользовательское действие в рабочей среде.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.custom_actions import ActionCreateParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.custom_actions.actions_create(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=ActionCreateParamsData(
        description="customizing our workflow",
        event="my.event",
        name="First Custom Action",
        timeout=7,
        url="https://example.com/custom-action",
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`workspace_id`: `Uuid` —

`data`: `ActionCreateParamsData`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.custom\_actions.actions\_update(...) -> AsyncHttpResponse\[ActionResponse]

Обновляет сведения о пользовательском действии.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.custom_actions import ActionUpdateParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.custom_actions.actions_update(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    action_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=ActionUpdateParamsData(
        active=True,
        description="customizing our workflow",
        event="my.event",
        multi_asset=True,
        name="First Custom Action",
        timeout=7,
        url="https://example.com/custom-action",
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`action_id`: `Uuid` —

`data`: `ActionUpdateParamsData`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.custom\_actions.actions\_delete(...) -> AsyncHttpResponse\[None]

Удаляет пользовательское действие.

Лимиты запросов: 60 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.custom_actions.actions_delete(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    action_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
)
```

**Параметры**

`account_id`: `Uuid` —

`action_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### Файлы

#### client.files.list(...) -> AsyncHttpResponse\[AssetsWithIncludesResponse]

Создает список файлов в указанной папке.

Лимиты запросов: 5 вызовов в течение 1 секунды для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.files.list(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include="media_links",
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)
```

**Параметры**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`include`: `typing.Optional[FileWithMediaLinksInclude]` —

`after`: `typing.Optional[RequestAfterOpaqueCursor]`

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: `typing.Optional[RequestPageSize]` —

`include_total_count`: `typing.Optional[IncludeTotalCount]` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.files.create(...) -> AsyncHttpResponse\[FileWithUploadUrlsResponse]

Создает новый файл в родительской папке. `Создать файл (локальное добавление)` и `Создать файл (удаленное добавление)` заменили эту конечную точку.

Лимиты запросов: 5 вызовов в течение 1 секунды для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.files import FileCreateParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.files.create(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=FileCreateParamsData(
        file_size=1137444,
        media_type="image/png",
        name="asset.png",
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`data`: `FileCreateParamsData`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.files.show(...) -> AsyncHttpResponse\[FileWithIncludesResponse]

Показывает сведения о файле.

Используйте параметр запроса include, чтобы в ответ выборочно включались дополнительные свойства.

> **Note**
>
> Если вы передадите параметр `media_links.original`, а у пользователя не будет прав на загрузку этого файла, то эта конечная точка вернет ошибку `403 (запрещено)`. Если контент недоступен из-за того, что для данного пользователя требуется водяной знак, а запрошенные media\_links его не поддерживают, то запрос будет выполнен успешно, но неподдерживаемые ссылки на медиафайлы примут значение null. Точно так же, если запрашиваемая ссылка на перекодирование не существует для определенного файла (например, включение `media_links.video_h264_180` для статического изображения) или процесс перекодирования еще не завершен (то есть статус файла — «добавлен», а не «перекодирован»), то в полезной нагрузке ответа эта ссылка также примет значение null. Проще говоря, клиент должен корректно обрабатывать ссылки на медиафайлы со значением null.

Лимиты запросов: 5 вызовов в течение 1 секунды для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.files.show(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    file_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include="media_links",
)
```

**Параметры**

`account_id`: `Uuid` —

`file_id`: `Uuid` —

`include`: `typing.Optional[FileWithMediaLinksInclude]` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.files.delete(...) -> AsyncHttpResponse\[None]

Удаляет файл по идентификатору.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.files.delete(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    file_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
)
```

**Параметры**

`account_id`: `Uuid` —

`file_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.files.update(...) -> AsyncHttpResponse\[FileResponse]

Обновляет сведения о файле.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.files import FileUpdateParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.files.update(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    file_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=FileUpdateParamsData(
        name="asset.png",
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`file_id`: `Uuid` —

`data`: `FileUpdateParamsData`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.files.copy(...) -> AsyncHttpResponse\[FileCopyResponse]

Копирует файл.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.files import FileCopyParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.files.copy(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    file_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    copy_metadata=True,
    copy_comments="none",
    data=FileCopyParamsData(
        parent_id="2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`file_id`: `Uuid` —

`copy_metadata`: `typing.Optional[bool]` — копировать ли значения метаданных вместе с файлом

`copy_comments`: `typing.Optional[FilesCopyRequestCopyComments]` — какие комментарии копировать вместе с файлом

`data`: `typing.Optional[FileCopyParamsData]`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.files.create\_remote\_upload(...) -> AsyncHttpResponse\[FileRemoteUploadResponse]

Создает новый файл в родительской папке путем удаленного добавления.

Лимиты запросов: 5 вызовов в течение 1 секунды для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.files import FileCreateRemoteUploadParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.files.create_remote_upload(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=FileCreateRemoteUploadParamsData(
        name="asset.png",
        source_url="https://upload.wikimedia.org/wikipedia/commons/e/e1/White_Pixel_1x1.png",
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`data`: `FileCreateRemoteUploadParamsData`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.files.move(...) -> AsyncHttpResponse\[FileResponse]

Перемещает файл в папку или стек версий.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.files import FileMoveParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.files.move(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    file_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=FileMoveParamsData(
        parent_id="2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`file_id`: `Uuid` —

`data`: `FileMoveParamsData`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.files.create\_local\_upload(...) -> AsyncHttpResponse\[FileWithUploadUrlsResponse]

Создает новый файл в родительской папке путем локального добавления.

Лимиты запросов: 5 вызовов в течение 1 секунды для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.files import FileCreateLocalUploadParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.files.create_local_upload(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=FileCreateLocalUploadParamsData(
        file_size=1137444,
        name="asset.png",
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`data`: `FileCreateLocalUploadParamsData`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.files.show\_file\_upload\_status(...) -> AsyncHttpResponse\[FileUploadStatusResponse]

Показать сведения о статусе добавления файла.

Лимиты запросов: 5 вызовов в течение 1 секунды для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.files.show_file_upload_status(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    file_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
)
```

**Параметры**

`account_id`: `Uuid` —

`file_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.files.import\_file(...) -> AsyncHttpResponse\[FileResponse]

Импортирует файл из хранилища, настроенного в учетной записи.

Лимиты запросов: 5 вызовов в течение 1 секунды для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.files import FileImportParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.files.import_file(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=FileImportParamsData(
        key="uploads/08091b0f-a541-42f5-a059-5e8c4afecc12/original.png",
        name="asset.png",
        storage_location="123e4567-e89b-12d3-a456-426614174000",
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`data`: `FileImportParamsData`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### Разрешения папки

#### client.folder\_permissions.folder\_user\_roles\_index(...) -> AsyncHttpResponse\[UserRolesResponse]

Создает список ролей пользователей для указанной папки.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.folder_permissions.folder_user_roles_index(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include_deactivated=True,
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)
```

**Параметры**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`include_deactivated`: `typing.Optional[bool]` — поддерживает включение деактивированных пользователей в ответ. По умолчанию: false.

`after`: `typing.Optional[RequestAfterOpaqueCursor]`

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: `typing.Optional[RequestPageSize]` —

`include_total_count`: `typing.Optional[IncludeTotalCount]` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.folder\_permissions.folder\_user\_roles\_update(...) -> AsyncHttpResponse\[UpdateUserRolesResponse]

Обновляет роли пользователей для указанной папки, если пользователь уже добавлен в нее. Если пользователь не добавлен в эту папку, он будет добавлен с указанной ролью.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio, UpdateUserRolesParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.folder_permissions.folder_user_roles_update(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    user_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=UpdateUserRolesParamsData(
        role="editor",
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`user_id`: `Uuid` —

`data`: `UpdateUserRolesParamsData`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.folder\_permissions.delete(...) -> AsyncHttpResponse\[None]

Удаляет пользователя из указанной папки.

Лимиты запросов: 60 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.folder_permissions.delete(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    user_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
)
```

**Параметры**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`user_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### Папки

#### client.folders.show(...) -> AsyncHttpResponse\[FolderWithIncludesResponse]

Показывает сведения о папке.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.folders.show(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include="creator",
)

```

**Параметры**

`account_id`: Uuid —

`folder_id`: Uuid —

`include`: typing.Optional\[AssetInclude] —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.folders.delete(...) -> AsyncHttpResponse\[None]

Удаляет папку по идентификатору.

Лимиты запросов: 60 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.folders.delete(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
)

```

**Параметры**

`account_id`: Uuid —

`folder_id`: Uuid —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.folders.update(...) -> AsyncHttpResponse\[FolderResponse]

Обновляет сведения о папке.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.folders import FolderUpdateParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.folders.update(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=FolderUpdateParamsData(
        name="Folder name",
    ),
)

```

**Параметры**

`account_id`: Uuid —

`folder_id`: Uuid —

`data`: FolderUpdateParamsData

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.folders.index(...) -> AsyncHttpResponse\[AssetsWithIncludesResponse]

Создает список дочерних элементов в указанной папке.

Используйте параметр запроса include, чтобы в ответ выборочно включались дополнительные свойства.

> **Note**
>
> Если вы передадите параметр `media_links.original`, а у пользователя не будет прав на загрузку файлов в соответствующем проекте, то эта конечная точка вернет ошибку 403 (запрещено). Если контент недоступен из-за того, что для данного пользователя требуется водяной знак, а запрошенные media\_links его не поддерживают, то запрос будет выполнен успешно, но неподдерживаемые ссылки на медиафайлы примут значение null. Точно так же, если запрашиваемая ссылка на перекодирование не существует для определенного файла (например, включение `media_links.video_h264_180` для статического изображения) или процесс перекодирования еще не завершен (то есть статус файла — «добавлен», а не «перекодирован»), то в полезной нагрузке ответа ссылка на медиафайл также примет значение null. Проще говоря, клиент должен корректно обрабатывать ссылки на медиафайлы со значением null.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.folders.index(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include="media_links",
    type="file,folder,version_stack",
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)

```

**Параметры**

`account_id`: Uuid —

`folder_id`: Uuid —

`include`: typing.Optional\[FileWithMediaLinksInclude] —

`type`: typing.Optional\[ChildrenType] —

`after`: typing.Optional\[RequestAfterOpaqueCursor]

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: typing.Optional\[RequestPageSize] —

`include_total_count`: typing.Optional\[IncludeTotalCount] —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.folders.copy(...) -> AsyncHttpResponse\[FolderCopyResponse]

Копирует папку.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.folders import FolderCopyParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.folders.copy(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    copy_metadata=True,
    data=FolderCopyParamsData(
        parent_id="2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
    ),
)

```

**Параметры**

`account_id`: Uuid —

`folder_id`: Uuid —

`copy_metadata`: typing.Optional\[bool] — копировать ли значения метаданных вместе с папкой

`data`: typing.Optional\[FolderCopyParamsData]

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.folders.list(...) -> AsyncHttpResponse\[FoldersWithIncludesResponse]

Создает список папок в указанной папке.

Лимиты запросов: 5 вызовов в течение 1 секунды для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.folders.list(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include="creator",
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)

```

**Параметры**

`account_id`: Uuid —

`folder_id`: Uuid —

`include`: typing.Optional\[AssetInclude] —

`after`: typing.Optional\[RequestAfterOpaqueCursor]

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: typing.Optional\[RequestPageSize] —

`include_total_count`: typing.Optional\[IncludeTotalCount] —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.folders.create(...) -> AsyncHttpResponse\[FolderResponse]

Создает новую папку внутри указанного параметра пути folder\_id.

Лимиты запросов: 3 вызова в течение 1 секунды для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.folders import FolderCreateParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.folders.create(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=FolderCreateParamsData(
        name="Folder name",
    ),
)

```

**Параметры**

`account_id`: Uuid —

`folder_id`: Uuid —

`data`: FolderCreateParamsData

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.folders.move(...) -> AsyncHttpResponse\[FolderResponse]

Перемещает папку в другую папку.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.folders import FolderMoveParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.folders.move(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=FolderMoveParamsData(
        parent_id="2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
    ),
)

```

**Параметры**

`account_id`: Uuid —

`folder_id`: Uuid —

`data`: FolderMoveParamsData

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### Группы

#### client.groups.index(...) -> AsyncHttpResponse\[GroupsWithIncludesResponse]

Создает список групп в учетной записи.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.groups.index(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include="creator",
    sort="creator_asc",
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)
```

**Параметры**

`account_id`: `Uuid` —

`include`: `typing.Optional[typing.Literal["creator"]]` —

`sort`: `typing.Optional[GroupsIndexRequestSort]` — сортировка групп по параметрам запроса

`after`: `typing.Optional[RequestAfterOpaqueCursor]`

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: `typing.Optional[RequestPageSize]` —

`include_total_count`: `typing.Optional[IncludeTotalCount]` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.groups.show(...) -> AsyncHttpResponse\[GroupWithIncludesResponse]

Показывает сведения о группе.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.groups.show(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    group_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include="creator",
)
```

**Параметры**

`account_id`: `Uuid` —

`group_id`: `Uuid` —

`include`: `typing.Optional[typing.Literal["creator"]]` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.groups.create(...) -> AsyncHttpResponse\[GroupResponse]

Создает группу для текущей учетной записи.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.groups import CreateGroupParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.groups.create(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=CreateGroupParamsData(
        emoji="smile",
        name="group-1",
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`data`: `CreateGroupParamsData`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.groups.update(...) -> AsyncHttpResponse\[GroupResponse]

Обновляет сведения о группе.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.groups import UpdateGroupParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.groups.update(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    group_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=UpdateGroupParamsData(
        emoji="smile",
        name="group-1",
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`group_id`: `Uuid` —

`data`: `UpdateGroupParamsData`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### Метаданные

#### client.metadata.bulk\_update(...) -> AsyncHttpResponse\[None]

Обновляет значения метаданных сразу в нескольких файлах.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.metadata import (
    BulkUpdateMetadataParamsData,
    BulkUpdateMetadataParamsDataValuesItem,
)

client = Frameio(
    token="YOUR_TOKEN",
)
client.metadata.bulk_update(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    project_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=BulkUpdateMetadataParamsData(
        file_ids=[
            "09b31c2a-04de-464a-a593-643a36ef0d98",
            "b967fc36-4e18-4b48-a3ab-c790100e2baa",
        ],
        values=[
            BulkUpdateMetadataParamsDataValuesItem(
                field_definition_id="ff41ce50-269b-4624-8306-aac10e28ab94",
                value=[
                    {
                        "id": "e60f47b4-cf8e-4273-96d5-3258a830a0aa",
                        "type": "user",
                    },
                    {
                        "id": "24eeaf7e-ce27-4555-bc77-cce39900626d",
                        "type": "account_user_group",
                    },
                ],
            )
        ],
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`project_id`: `Uuid` —

`data`: `BulkUpdateMetadataParamsData`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.metadata.show(...) -> AsyncHttpResponse\[MetadataResponse]

Показывает метаданные файла.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.metadata.show(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    file_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    show_null=True,
)
```

**Параметры**

`account_id`: `Uuid` —

`file_id`: `Uuid` —

`show_null`: `typing.Optional[bool]` —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### Поля метаданных

#### client.metadata\_fields.metadata\_field\_definitions\_delete(...) -> AsyncHttpResponse\[None]

Удаляет определения пользовательских полей на уровне учетной записи.

Лимиты запросов: 60 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.metadata_fields.metadata_field_definitions_delete(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    field_definition_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
)

```

**Параметры**

`account_id`: Uuid —

`field_definition_id`: Uuid —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.metadata\_fields.metadata\_field\_definitions\_update(...) -> AsyncHttpResponse\[FieldDefinitionResponse]

Обновляет определения пользовательских полей на уровне учетной записи.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import (
    Frameio,
    UpdateSelectDefinitionParamsFieldConfiguration,
    UpdateSelectDefinitionParamsFieldConfigurationOptionsItem,
)
from frameio.metadata_fields import UpdateFieldDefinitionParamsData_Select

client = Frameio(
    token="YOUR_TOKEN",
)
client.metadata_fields.metadata_field_definitions_update(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    field_definition_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=UpdateFieldDefinitionParamsData_Select(
        field_configuration=UpdateSelectDefinitionParamsFieldConfiguration(
            enable_add_new=False,
            options=[
                UpdateSelectDefinitionParamsFieldConfigurationOptionsItem(
                    display_name="Option 1",
                ),
                UpdateSelectDefinitionParamsFieldConfigurationOptionsItem(
                    display_name="Option 2",
                ),
            ],
        ),
        name="Updated-Field-Name",
    ),
)

```

**Параметры**

`account_id`: Uuid —

`field_definition_id`: Uuid —

`data`: typing.Optional\[UpdateFieldDefinitionParamsData]

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.metadata\_fields.metadata\_field\_definitions\_index(...) -> AsyncHttpResponse\[FieldDefinitionsWithIncludesResponse]

Создает список определений полей на уровне учетной записи.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.metadata_fields.metadata_field_definitions_index(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)

```

**Параметры**

`account_id`: Uuid —

`include`: typing.Optional\[typing.Literal\["creator"]] —

`after`: typing.Optional\[RequestAfterOpaqueCursor]

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: typing.Optional\[RequestPageSize] —

`include_total_count`: typing.Optional\[IncludeTotalCount] —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.metadata\_fields.metadata\_field\_definitions\_create(...) -> AsyncHttpResponse\[FieldDefinitionResponse]

Создает определения полей на уровне учетной записи.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import (
    Frameio,
    SelectDefinitionParamsFieldConfiguration,
    SelectDefinitionParamsFieldConfigurationOptionsItem,
)
from frameio.metadata_fields import CreateFieldDefinitionParamsData_Select

client = Frameio(
    token="YOUR_TOKEN",
)
client.metadata_fields.metadata_field_definitions_create(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=CreateFieldDefinitionParamsData_Select(
        field_configuration=SelectDefinitionParamsFieldConfiguration(
            enable_add_new=False,
            options=[
                SelectDefinitionParamsFieldConfigurationOptionsItem(
                    display_name="Option 1",
                ),
                SelectDefinitionParamsFieldConfigurationOptionsItem(
                    display_name="Option 2",
                ),
            ],
        ),
        name="Fields definition name",
    ),
)

```

**Параметры**

`account_id`: Uuid —

`data`: typing.Optional\[CreateFieldDefinitionParamsData]

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### Разрешения проекта

#### client.project\_permissions.index(...) -> AsyncPager\[UserRole, UserRolesResponse]

Создает список ролей пользователя для указанного проекта.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
response = client.project_permissions.index(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    project_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include_deactivated=True,
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)
for item in response:
    yield item
# alternatively, you can paginate page-by-page
for page in response.iter_pages():
    yield page

```

**Параметры**

`account_id`: Uuid —

`project_id`: Uuid —

`include_deactivated`: typing.Optional\[bool] — поддерживает включение деактивированных пользователей в ответ. По умолчанию: false.

`after`: typing.Optional\[RequestAfterOpaqueCursor]

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> ПРИМЕЧАНИЕ. Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: typing.Optional\[RequestPageSize] —

`include_total_count`: typing.Optional\[IncludeTotalCount] —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.project\_permissions.delete(...) -> AsyncHttpResponse\[None]

Удаляет пользователя из указанного проекта.

Лимиты запросов: 60 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.project_permissions.delete(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    project_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    user_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
)

```

**Параметры**

`account_id`: Uuid —

`project_id`: Uuid —

`user_id`: Uuid —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.project\_permissions.project\_user\_roles\_update(...) -> AsyncHttpResponse\[UpdateUserRolesResponse]

Обновляет роли пользователя для указанного проекта, если пользователь уже добавлен в него. Если пользователь не добавлен в проект, он будет добавлен с указанной ролью.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio, UpdateUserRolesParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.project_permissions.project_user_roles_update(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    project_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    user_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=UpdateUserRolesParamsData(
        role="editor",
    ),
)

```

**Параметры**

`account_id`: Uuid —

`project_id`: Uuid —

`user_id`: Uuid —

`data`: UpdateUserRolesParamsData

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### Проекты

#### client.projects.show(...) -> AsyncHttpResponse\[ProjectWithIncludesResponse]

Показывает сведения о проекте.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.projects.show(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    project_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
)
```

**Параметры**

`account_id`: `Uuid` —

`project_id`: `Uuid` —

`include`: `typing.Optional[typing.Literal["owner"]]` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.projects.delete(...) -> AsyncHttpResponse\[None]

Удаляет проект.

Лимиты запросов: 60 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.projects.delete(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    project_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
)
```

**Параметры**

`account_id`: `Uuid` —

`project_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.projects.update(...) -> AsyncHttpResponse\[ProjectResponse]

Обновляет сведения о проекте.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.projects import ProjectUpdateParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.projects.update(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    project_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=ProjectUpdateParamsData(
        name="Project Name",
        restricted=True,
        status="active",
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`project_id`: `Uuid` —

`data`: `ProjectUpdateParamsData`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.projects.index(...) -> AsyncPager\[ProjectWithIncludes, ProjectsWithIncludesResponse]

Создает список проектов в указанной рабочей среде.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
response = client.projects.index(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)
for item in response:
    yield item
# alternatively, you can paginate page-by-page
for page in response.iter_pages():
    yield page
```

**Параметры**

`account_id`: `Uuid` —

`workspace_id`: `Uuid` —

`include`: `typing.Optional[typing.Literal["owner"]]` —

`after`: `typing.Optional[RequestAfterOpaqueCursor]`

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: `typing.Optional[RequestPageSize]` —

`include_total_count`: `typing.Optional[IncludeTotalCount]` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.projects.create(...) -> AsyncHttpResponse\[ProjectResponse]

Создает проект в указанной рабочей среде.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.projects import ProjectParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.projects.create(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=ProjectParamsData(
        name="Project Name",
        restricted=True,
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`workspace_id`: `Uuid` —

`data`: `ProjectParamsData`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.projects.account\_projects\_index(...) -> AsyncPager\[ProjectWithIncludes, ProjectsWithIncludesResponse]

Создает список всех проектов, к которым имеет доступ аутентифицированный пользователь в указанной учетной записи.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
response = client.projects.account_projects_index(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include="owner",
    sort="name_asc",
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)
for item in response:
    yield item
# alternatively, you can paginate page-by-page
for page in response.iter_pages():
    yield page
```

**Параметры**

`account_id`: `Uuid` —

`include`: `typing.Optional[typing.Literal["owner"]]` —

`sort`: `typing.Optional[AccountProjectsIndexRequestSort]` — сортировка проектов по параметрам запроса

`after`: `typing.Optional[RequestAfterOpaqueCursor]`

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: `typing.Optional[RequestPageSize]` —

`include_total_count`: `typing.Optional[IncludeTotalCount]` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.projects.invited\_projects\_index(...) -> AsyncPager\[ProjectWithIncludes, ProjectsWithIncludesResponse]

Создает список проектов, в которые текущий пользователь был приглашен в рамках указанной учетной записи, но к которым у него нет доступа на уровне рабочей среды. Это проекты, в которых пользователь имеет доступ для совместной работы на уровне конкретного проекта без более широких разрешений на уровне команды/рабочей среды.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
response = client.projects.invited_projects_index(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include="owner",
    sort="name_asc",
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)
for item in response:
    yield item
# alternatively, you can paginate page-by-page
for page in response.iter_pages():
    yield page
```

**Параметры**

`account_id`: `Uuid` —

`include`: `typing.Optional[typing.Literal["owner"]]` —

`sort`: `typing.Optional[InvitedProjectsIndexRequestSort]` — сортировка проектов по параметрам запроса

`after`: `typing.Optional[RequestAfterOpaqueCursor]`

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: `typing.Optional[RequestPageSize]` —

`include_total_count`: `typing.Optional[IncludeTotalCount]` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### Поиск

#### client.search.search(...) -> AsyncHttpResponse\[SearchResponse]

Выполняет поиск по ресурсам, папкам и проектам в учетной записи.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.search import SearchParamsFilters

client = Frameio(
    token="YOUR_TOKEN",
)
client.search.search(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    engine="nlp",
    query="red car driving on highway",
    filters=SearchParamsFilters(
        files_and_version_stacks=True,
        folders=False,
        projects=False,
    ),
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)
```

**Параметры**

`account_id`: `Uuid` —

`engine`: `SearchParamsEngine` — используемая поисковая система. Доступные поисковые системы: lexical, nlp.

`query`: `str` — текст поискового запроса

`after`: `typing.Optional[RequestAfterOpaqueCursor]`

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: `typing.Optional[RequestPageSize]` —

`include_total_count`: `typing.Optional[IncludeTotalCount]` —

`filters`: `typing.Optional[SearchParamsFilters]` — фильтры возвращаемых типов результатов

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### Общие ресурсы

#### client.shares.show(...) -> AsyncHttpResponse\[ShareResponse]

Показывает отдельный общий ресурс.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage
from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.shares.show(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    share_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
)
```

**Параметры**

`account_id`: `Uuid` —

`share_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.shares.delete(...) -> AsyncHttpResponse\[None]

Удаляет общий ресурс.

Лимиты запросов: 60 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage
from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.shares.delete(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    share_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
)

```

**Параметры**

`account_id`: `Uuid` —

`share_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.shares.update(...) -> AsyncHttpResponse\[ShareResponse]

Обновляет общий ресурс.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

import datetime

from frameio import Frameio
from frameio.shares import UpdateShareParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.shares.update(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    share_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=UpdateShareParamsData(
        access="public",
        description="A descriptive summary of the share",
        downloading_enabled=True,
        expiration=datetime.datetime.fromisoformat(
            "2026-01-22 17:04:53+00:00",
        ),
        name="Share Name",
        passphrase="as!dfj39sd(*",
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`share_id`: `Uuid`—

`data`: `UpdateShareParamsData`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.shares.list\_reviewers(...) -> AsyncPager\[User, ShareReviewersResponse]

Создает список рецензентов общего ресурса.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
response = client.shares.list_reviewers(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    share_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)
for item in response:
    yield item
# alternatively, you can paginate page-by-page
for page in response.iter_pages():
    yield page
```

**Параметры**

`account_id`: `Uuid` —

`share_id`: `Uuid`—

`after`: `typing.Optional[RequestAfterOpaqueCursor]`

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: `typing.Optional[RequestPageSize]` —

`include_total_count`: `typing.Optional[IncludeTotalCount]` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.shares.add\_reviewers(...) -> AsyncHttpResponse\[None]

Добавляет рецензентов в безопасный общий ресурс по трем типам идентификаторов: `adobe_user_id`, `email` и `user_id`.

Запрос может включать только один параметр типа идентификатора.

`email` — единственный идентификатор, позволяющий добавлять в общий ресурс рецензентов, у которых нет учетной записи участника Frame в учетной записи, к которой принадлежит общий ресурс.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.shares import (
    AddReviewersToShareParamsData,
    AddReviewersToShareParamsDataReviewers,
)

client = Frameio(
    token="YOUR_TOKEN",
)
client.shares.add_reviewers(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    share_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=AddReviewersToShareParamsData(
        message="Please join my share!",
        reviewers=AddReviewersToShareParamsDataReviewers(
            emails=["email1@domain.com", "email2@domain.com"],
        ),
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`share_id`: `Uuid`—

`data`: `AddReviewersToShareParamsData`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.shares.remove\_reviewers(...) -> AsyncHttpResponse\[None]

Удаляет рецензентов из защищенного общего ресурса по трем типам идентификаторов: `adobe_user_id`, `email` и `user_id`.

Запрос может включать только один параметр типа идентификатора.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.shares import (
    RemoveReviewerParamsData,
    RemoveReviewerParamsDataReviewers,
)

client = Frameio(
    token="YOUR_TOKEN",
)
client.shares.remove_reviewers(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    share_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=RemoveReviewerParamsData(
        reviewers=RemoveReviewerParamsDataReviewers(
            adobe_user_ids=[
                "2A3C1A3D66C621B20A494021@176719f5667c82b4499999.e"
            ],
        ),
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`share_id`: `Uuid`—

`data`: `RemoveReviewerParamsData`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.shares.remove\_asset(...) -> AsyncHttpResponse\[RemoveAssetResponse]

Удаляет ресурс, который в настоящий момент указан в ссылке общего доступа, из этой ссылки.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.shares.remove_asset(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    share_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    asset_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
)
```

**Параметры**

`account_id`: `Uuid` —

`share_id`: `Uuid`—

`asset_id`: `Uuid`—

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.shares.add\_asset(...) -> AsyncHttpResponse\[AddAssetResponse]

Добавляет новый ресурс в общий доступ.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.shares import AddAssetParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.shares.add_asset(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    share_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=AddAssetParamsData(
        asset_id="0cc1cb59-1d7c-4176-8532-afe099897318",
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`share_id`: `Uuid`—

`data`: `AddAssetParamsData`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.shares.index(...) -> AsyncPager\[Share, SharesResponse]

Создает список общих ресурсов в проекте.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
response = client.shares.index(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    project_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)
for item in response:
    yield item
# alternatively, you can paginate page-by-page
for page in response.iter_pages():
    yield page
```

**Параметры**

`account_id`: `Uuid` —

`project_id`: `Uuid`—

`after`: `typing.Optional[RequestAfterOpaqueCursor]`

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: `typing.Optional[RequestPageSize]` —

`include_total_count`: `typing.Optional[IncludeTotalCount]` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.shares.create(...) -> AsyncHttpResponse\[ShareResponse]

Создает общий ресурс.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage
import datetime

from frameio import Frameio
from frameio.shares import CreateShareParamsData_Asset

client = Frameio(
    token="YOUR_TOKEN",
)
client.shares.create(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    project_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=CreateShareParamsData_Asset(
        access="public",
        asset_ids=[
            "12eb1446-5736-4f93-85fc-3b636f156211",
            "f23a3b3e-7b1f-4655-b91a-acf0566e5bb9",
        ],
        downloading_enabled=True,
        expiration=datetime.datetime.fromisoformat(
            "2026-01-22 17:04:53+00:00",
        ),
        name="Share Name",
        passphrase="as!dfj39sd(*",
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`project_id`: `Uuid`—

`data`: `CreateShareParamsData`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### Загрузка

#### frameio.upload.FrameioUploader(asset, file, ...)

Добавьте локальный файл в Frame.io, используя предварительно подписанные URL-адреса, возвращенные методом `client.files.create_local_upload(...)`. `FrameioUploader` — это легковесная обертка, которая считывает параметры `upload_urls`, `file_size` и `media_type` из ответа `FileWithUploadUrls` и выполняет многопоточное добавление фрагментами в хранилище S3.

**`usage`**

```python usage

from frameio import Frameio
from frameio.files import FileCreateLocalUploadParamsData
from frameio.upload import FrameioUploader

client = Frameio(
    token="YOUR_TOKEN",
)
response = client.files.create_local_upload(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=FileCreateLocalUploadParamsData(
        file_size=1137444,
        name="asset.png",
    ),
)
with open("asset.png", "rb") as f:
    FrameioUploader(response.data, f).upload()
```

**Параметры**

`asset`: `FileWithUploadUrls` — экземпляр `FileWithUploadUrls`, возвращенный `client.files.create_local_upload(...)`.

`file`: `typing.BinaryIO` — файлоподобный объект, открытый в режиме бинарного чтения. (`"rb"`).

`max_workers`: `int` — уровень параллелизма пула потоков, передаваемый базовому инструменту для добавления. По умолчанию: 5.

`headers`: `typing.Optional[typing.Dict[str, str]]` — дополнительные заголовки, добавляемые в каждый запрос PUT к хранилищу S3. По умолчанию: `{"x-amz-acl": "private"}`, как того требует Frame.io.

`max_retries`: `int` — максимальное количество повторных попыток для каждого фрагмента. По умолчанию: 3.

`on_progress`: `typing.Optional[typing.Callable[[int, int], None]]` — дополнительный обратный вызов, выполняемый после каждого фрагмента с `(bytes_uploaded_so_far, total_bytes)`. **Методы** `upload() -&gt; None` — добавляет файл. Блокирует действия до завершения операции или возвращает ошибку.

#### Пользователи

#### client.users.show() -> AsyncHttpResponse\[ProfileResponse]

Проверяет сведения о пользователе, связанном с токеном Bearer.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.users.show()
```

**Параметры**

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### Стеки версий

#### client.version\_stacks.index(...) -> AsyncHttpResponse\[AssetsWithIncludesResponse]

Создает список дочерних элементов (файлов) в указанном стеке версий.

Используйте параметр запроса include, чтобы в ответ выборочно включались дополнительные свойства.

> **Note**
>
> Если вы передадите параметр `media_links.original`, а у пользователя не будет прав на загрузку файлов в соответствующем проекте, то эта конечная точка вернет ошибку `403 (запрещено)`. Если контент недоступен из-за того, что для данного пользователя требуется водяной знак, а запрошенные media\_links его не поддерживают, то запрос будет выполнен успешно, но неподдерживаемые ссылки на медиафайлы примут значение null. Точно так же, если запрашиваемая ссылка на перекодирование не существует для определенного файла (например, включение `media_links.video_h264_180` для статического изображения) или процесс перекодирования еще не завершен (то есть статус файла — «добавлен», а не «перекодирован»), то в полезной нагрузке ответа ссылка на медиафайл также примет значение null. Проще говоря, клиент должен корректно обрабатывать ссылки на медиафайлы со значением null.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.version_stacks.index(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    version_stack_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include="media_links",
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)

```

**Параметры**

`account_id`: Uuid —

`version_stack_id`: Uuid —

`include`: typing.Optional\[FileWithMediaLinksInclude] —

`after`: typing.Optional\[RequestAfterOpaqueCursor]

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: typing.Optional\[RequestPageSize] —

`include_total_count`: typing.Optional\[IncludeTotalCount] —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.version\_stacks.show(...) -> AsyncHttpResponse\[VersionStackWithIncludesResponse]

Показывает сведения о стеке версий.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.version_stacks.show(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    version_stack_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include="media_links",
)

```

**Параметры**

`account_id`: Uuid —

`version_stack_id`: Uuid —

`include`: typing.Optional\[VersionStacksShowRequestInclude] —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.version\_stacks.copy(...) -> AsyncHttpResponse\[VersionStackCopyResponse]

Копирует стек версий.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.version_stacks import VersionStackCopyParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.version_stacks.copy(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    version_stack_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    copy_metadata=True,
    data=VersionStackCopyParamsData(
        parent_id="2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
    ),
)

```

**Параметры**

`account_id`: Uuid —

`version_stack_id`: Uuid —

`copy_metadata`: typing.Optional\[bool] — копировать ли значения метаданных вместе со стеком версий

`data`: typing.Optional\[VersionStackCopyParamsData]

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.version\_stacks.list(...) -> AsyncHttpResponse\[VersionStacksWithIncludesResponse]

Создает список стеков версий в указанной папке.

Лимиты запросов: 5 вызовов в течение 1 секунды для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.version_stacks.list(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include="media_links",
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)

```

**Параметры**

`account_id`: Uuid —

`folder_id`: Uuid —

`include`: typing.Optional\[FileWithMediaLinksInclude] —

`after`: typing.Optional\[RequestAfterOpaqueCursor]

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: typing.Optional\[RequestPageSize] —

`include_total_count`: typing.Optional\[IncludeTotalCount] —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.version\_stacks.create(...) -> AsyncHttpResponse\[VersionStackWithIncludesResponse]

Создает новый стек версий в родительской папке.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.version_stacks import VersionStackCreateParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.version_stacks.create(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    folder_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=VersionStackCreateParamsData(
        file_ids=[
            "dd2a3cdd-fc90-41bd-a7b8-8a0447aec6d4",
            "79fed48a-8372-496e-8dcb-5e959b9b9fcf",
        ],
    ),
)

```

**Параметры**

`account_id`: Uuid —

`folder_id`: Uuid —

`data`: VersionStackCreateParamsData

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.version\_stacks.move(...) -> AsyncHttpResponse\[VersionStackResponse]

Перемещает стек версий в папку.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.version_stacks import VersionStackMoveParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.version_stacks.move(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    version_stack_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=VersionStackMoveParamsData(
        parent_id="2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
    ),
)

```

**Параметры**

`account_id`: Uuid —

`version_stack_id`: Uuid —

`data`: VersionStackMoveParamsData

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### Веб-перехватчики

#### client.webhooks.index(...) -> AsyncPager\[WebhookWithIncludes, WebhooksWithIncludesResponse]

Создает список веб-перехватчиков для указанной рабочей среды.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
response = client.webhooks.index(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)
for item in response:
    yield item
# alternatively, you can paginate page-by-page
for page in response.iter_pages():
    yield page
```

**Параметры**

`account_id`: Uuid —

`workspace_id`: Uuid —

`include`: typing.Optional\[typing.Literal\["creator"]] —

`after`: typing.Optional\[RequestAfterOpaqueCursor]

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: typing.Optional\[RequestPageSize] —

`include_total_count`: typing.Optional\[IncludeTotalCount] —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.webhooks.create(...) -> AsyncHttpResponse\[WebhookCreateResponse]

Создает отдельный веб-перехватчик с секретным ключом.

Допустимые события:

`file.created`, `file.deleted`, `file.ready`, `file.updated`, `file.upload.completed`, `file.versioned`, `file.copied`, `folder.created`, `folder.deleted`, `folder.updated`, `folder.copied`, `comment.completed`, `comment.created`, `comment.deleted`, `comment.uncompleted`, `comment.updated`, `customfield.created`, `customfield.updated`, `customfield.deleted`, `metadata.value.updated`, `project.created`, `project.deleted`, `project.updated`, `collection.created`, `collection.updated`, `collection.deleted`, `share.created`, `share.updated`, `share.deleted`, `share.viewed`.

Лимиты запросов: 10 вызовов в течение 1 минуты для учетной записи

**`usage`**

```python usage

from frameio import Frameio
from frameio.webhooks import WebhookCreateParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.webhooks.create(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=WebhookCreateParamsData(
        events=[
            "file.created",
            "file.deleted",
            "file.ready",
            "file.updated",
            "file.upload.completed",
            "file.versioned",
            "file.copied",
            "folder.created",
            "folder.deleted",
            "folder.updated",
            "folder.copied",
            "comment.completed",
            "comment.created",
            "comment.deleted",
            "comment.uncompleted",
            "comment.updated",
            "customfield.created",
            "customfield.updated",
            "customfield.deleted",
            "metadata.value.updated",
            "project.created",
            "project.deleted",
            "project.updated",
            "collection.created",
            "collection.updated",
            "collection.deleted",
            "share.created",
            "share.updated",
            "share.deleted",
            "share.viewed",
        ],
        name="New Webhook",
        url="https://url.example.com",
    ),
)

```

**Параметры**

`account_id`: Uuid —

`workspace_id`: Uuid —

`data`: WebhookCreateParamsData

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.webhooks.show(...) -> AsyncHttpResponse\[WebhookWithIncludesResponse]

Показывает сведения о веб-перехватчике.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.webhooks.show(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    webhook_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
)
```

**Параметры**

`account_id`: Uuid —

`webhook_id`: Uuid —

`include`: typing.Optional\[typing.Literal\["creator"]] —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.webhooks.delete(...) -> AsyncHttpResponse\[None]

Удаляет веб-перехватчик.

Лимиты запросов: 60 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.webhooks.delete(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    webhook_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
)
```

**Параметры**

`account_id`: Uuid —

`webhook_id`: Uuid —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.webhooks.update(...) -> AsyncHttpResponse\[WebhookResponse]

Обновляет сведения о веб-перехватчике.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio
from frameio.webhooks import WebhookUpdateParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.webhooks.update(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    webhook_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=WebhookUpdateParamsData(
        active=True,
        events=[
            "file.created",
            "file.deleted",
            "file.ready",
            "file.updated",
            "file.upload.completed",
            "file.versioned",
            "file.copied",
            "folder.created",
            "folder.deleted",
            "folder.updated",
            "folder.copied",
            "comment.completed",
            "comment.created",
            "comment.deleted",
            "comment.uncompleted",
            "comment.updated",
            "customfield.created",
            "customfield.updated",
            "customfield.deleted",
            "metadata.value.updated",
            "project.created",
            "project.deleted",
            "project.updated",
            "collection.created",
            "collection.updated",
            "collection.deleted",
            "share.created",
            "share.updated",
            "share.deleted",
            "share.viewed",
        ],
        name="Updated Webhook",
        url="https://url.example.com",
    ),
)
```

**Параметры**

`account_id`: Uuid —

`webhook_id`: Uuid —

`data`: WebhookUpdateParamsData

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### Разрешения рабочей среды

#### client.workspace\_permissions.index(...) -> AsyncPager\[UserRole, UserRolesResponse]

Создает список ролей пользователя для указанной рабочей среды.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage
from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
response = client.workspace_permissions.index(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    include_deactivated=True,
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)
for item in response:
    yield item
# alternatively, you can paginate page-by-page
for page in response.iter_pages():
    yield page
```

**Параметры**

`account_id`: `Uuid` —

`workspace_id`: `Uuid` —

`includ_deactivated`: `typing.Optional[bool]` — поддерживает включение деактивированных пользователей в ответ. По умолчанию: false.

`after`: `typing.Optional[RequestAfterOpaqueCursor]`

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: `typing.Optional[RequestPageSize]` —

`include_total_count`: `typing.Optional[IncludeTotalCount]` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.workspace\_permissions.workspace\_user\_roles\_delete(...) -> AsyncHttpResponse\[None]

Удаляет пользователя из указанной рабочей среды.

Лимиты запросов: 60 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage
from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.workspace_permissions.workspace_user_roles_delete(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    user_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
)

```

**Параметры**

`account_id`: `Uuid` —

`workspace_id`: `Uuid` —

`user_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### client.workspace\_permissions.workspace\_user\_roles\_update(...) -> AsyncHttpResponse\[UpdateUserRolesResponse]

Обновляет роли пользователя для указанной рабочей среды, если пользователь уже добавлен в нее. Если пользователь не добавлен в рабочую среду, он будет добавлен с указанной ролью.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio, UpdateUserRolesParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.workspace_permissions.workspace_user_roles_update(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    user_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=UpdateUserRolesParamsData(
        role="editor",
    ),
)
```

**Параметры**

`account_id`: `Uuid` —

`workspace_id`: `Uuid`—

`user_id`: `Uuid` —

`data`: `UpdateUserRolesParamsData`

`request_options`: `typing.Optional[RequestOptions]` — конфигурация на уровне конкретного запроса.

#### Рабочие среды

#### client.workspaces.show(...) -> AsyncHttpResponse\[WorkspaceWithIncludesResponse]

Показывает сведения о рабочей среде.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.workspaces.show(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
)
```

**Параметры**

`account_id`: Uuid —

`workspace_id`: Uuid —

`include`: typing.Optional\[typing.Literal\["creator"]] —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.workspaces.delete(...) -> AsyncHttpResponse\[None]

Удаляет рабочую среду из учетной записи.

Лимиты запросов: 60 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage
from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
client.workspaces.delete(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
)

```

**Параметры**

`account_id`: Uuid —

`workspace_id`: Uuid —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.workspaces.update(...) -> AsyncHttpResponse\[WorkspaceResponse]

Обновляет рабочую среду.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage

from frameio import Frameio, WorkspaceParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.workspaces.update(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=WorkspaceParamsData(
        name="My Workspace",
    ),
)
```

**Параметры**

`account_id`: Uuid —

`workspace_id`: Uuid —

`data`: WorkspaceParamsData

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.workspaces.index(...) -> AsyncPager\[WorkspaceWithIncludes, WorkspacesWithIncludesResponse]

Создает список рабочих сред для указанной учетной записи.

Лимиты запросов: 100 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage
from frameio import Frameio

client = Frameio(
    token="YOUR_TOKEN",
)
response = client.workspaces.index(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    after="<opaque_cursor>",
    page_size=10,
    include_total_count=False,
)
for item in response:
    yield item
# alternatively, you can paginate page-by-page
for page in response.iter_pages():
    yield page
```

**Параметры**

`account_id`: Uuid —

`workspace_id`: Uuid —

`include`: typing.Optional\[typing.Literal\["owner"]] —

after: typing.Optional\[RequestAfterOpaqueCursor]

Параметр запроса «непрозрачный курсор» для запросов, возвращающих разбитые на страницы результаты.

> **Tip**
>
> Это значение генерируется автоматически и включается в ссылки из предыдущего ответа. Оно не предназначено для чтения человеком.

`page_size`: typing.Optional\[RequestPageSize] —

`include_total_count`: typing.Optional\[IncludeTotalCount] —

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

#### client.workspaces.create(...) -> AsyncHttpResponse\[WorkspaceResponse]

Создает рабочую среду из учетной записи.

Лимиты запросов: 10 вызовов в течение 1 минуты для account\_user.

**`usage`**

```python usage
from frameio import Frameio, WorkspaceParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.workspaces.create(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=WorkspaceParamsData(
        name="My Workspace",
    ),
)
```

**Параметры**

`account_id`: Uuid —

`data`: WorkspaceParamsData

`request_options`: typing.Optional\[RequestOptions] — конфигурация на уровне конкретного запроса.

---

### PyPI

> **Launch**
>
> Посмотреть в [PyPI](https://pypi.org/project/frameio/)

---