> This page is for Plataforma, version V4 (default).
> For other versions, use one of these documentation indexes:
> - V4 (default): https://next.developer.frame.io/platform/v4/llms.txt
> - V4 experimental: https://next.developer.frame.io/platform/v4-experimental/llms.txt
> - Herdado: 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.

# Referência do SDK para Python

### Instalação

```curl
pip install frameio
```

---

### Uso

Instancie e use o cliente com o seguinte:

```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",
    ),
)
```

---

### Cliente assíncrono

O SDK também exporta um cliente assíncrono para que você possa fazer chamadas não bloqueantes para nossa API. Observe que, se estiver construindo uma classe de cliente assíncrono httpx para passar para este cliente, use httpx.AsyncClient() em vez de httpx.Client() (por exemplo, para o parâmetro httpx\_client deste cliente).

```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())
```

---

### Tratamento de exceções

Quando a API retorna um código de status sem sucesso (resposta 4xx ou 5xx), uma subclasse do erro a seguir será gerada.

```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)
```

---

### Paginação

Solicitações paginadas retornarão um SyncPager ou AsyncPager, que pode ser usado como gerador para o objeto subjacente.

```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
```

---

### Avançado

#### Acessar dados brutos da resposta

O SDK fornece acesso a dados brutos da resposta, incluindo cabeçalhos, por meio da propriedade .with\_raw\_response. A propriedade .with\_raw\_response retorna um cliente "bruto" que pode ser usado para acessar os atributos .headers e .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)
```

---

#### Tentativas

O SDK é instrumentado com novas tentativas automáticas com backoff exponencial. Uma solicitação será repetida enquanto a solicitação for considerada repetível e o número de tentativas não tiver ultrapassado o limite configurado de novas tentativas (padrão: 2).

Uma solicitação é considerada repetível quando qualquer um dos seguintes códigos de status HTTP é retornado:

* 408 (Tempo-limite)
* 429 (Muitas solicitações)
* 5XX (Erros internos do servidor)

\
&#x20;Use a opção de solicitação `max_retries` para configurar esse comportamento.

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

---

#### Tempos-limite

O SDK usa um tempo-limite padrão de 60 segundos. Você pode configurar isso com uma opção timeout no nível do cliente ou da solicitação.

```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
})
```

---

#### Cliente personalizado

Você pode substituir o cliente httpx para personalizá-lo de acordo com seu caso de uso. Alguns casos de uso comuns incluem suporte a proxies e transportes.

```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"),
    ),
)
```

---

### Referência

#### Permissões da conta

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

Listar funções de usuário para uma determinada conta.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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

```

**Parâmetros**

`account_id`: Uuid —

`include_deactivated`: typing.Optional\[bool] — Suporte para incluir usuários desativados na resposta.O padrão é false.

`after`: typing.Optional\[RequestAfterOpaqueCursor]

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> Esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

#### Contas

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

Listar contas do usuário atual.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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
```

**Parâmetros**

`after`: typing.Optional\[RequestAfterOpaqueCursor]

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> Esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Listar logs de auditoria com recursos de filtragem por meio de parâmetros de consulta\*

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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
```

**Parâmetros**

`account_id`: `Uuid` —

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

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

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

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

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> Esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

#### Autenticação

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

Autentica usando a concessão OAuth 2.0 client\_credentials. Esse fluxo não envolve um usuário e não retorna um token de atualização. Quando o token de acesso expira, o SDK solicita automaticamente um novo usando as credenciais de cliente. Para uso assíncrono, use `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)
```

**Parâmetros**

`client_id`: `str` — ID do cliente OAuth do Adobe IMS.

`client_secret`: `str` — Client secret OAuth do Adobe IMS.

`scopes`: `str` — Escopos separados por espaços (OAuth 2.0 RFC 6749). O padrão é `openid AdobeID frame.s2s.all`.

`ims_base_url`: `str` — URL base do IMS para ambientes de preparação/alternativos. O padrão é produção.

`http_client`: `typing.Optional[httpx.Client]` — httpx opcional.Cliente para proxy, TLS ou pooling de conexão.

`on_token_refreshed`: `typing.Optional[typing.Callable[[dict[str, Any]], None]]` — Callback opcional disparado após cada busca de token.

`timeout`: `float` — Tempo-limite de solicitação HTTP em segundos. O padrão é 30.

`max_retries`: `int` — Número máximo de novas tentativas para falhas transitórias. O padrão é 2.

`refresh_buffer`: `int` — Segundos antes da expiração para acionar a atualização proativa. O padrão é 60. **Métodos**`get_token() -&gt; str` — Retorna um token de acesso válido, atualizando se necessário. Passe esta referência de método (não uma chamada) para o SDK: `Frameio(token=auth.get_token)`. `authenticate() -&gt; dict[str, Any]` — Busca explicitamente um novo token de acesso. Retorna o dict de resposta do token com `access_token`, `expires_in`, etc. `revoke() -&gt; None` — Revoga ambos os tokens no lado do servidor e limpa o estado local. `export_tokens() -&gt; dict[str, Any]` — Exporta o estado atual do token para persistência. `import_tokens(data: dict[str, Any]) -&gt; None` — Restaura o estado do token a partir de um dict exportado anteriormente.

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

Autentica usando a concessão OAuth 2.0 authorization\_code. Use isso para aplicativos do lado do servidor que podem armazenar um client secret com segurança. Para uso assíncrono, use `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)
```

**Parâmetros**

`client_id`: `str` — ID do cliente OAuth do Adobe IMS.

`client_secret`: `str` — Client secret OAuth do Adobe IMS.

`redirect_uri`: `str` — URI de redirecionamento registrado.

`scopes`: `str` — Escopos separados por espaços (OAuth 2.0 RFC 6749).

`ims_base_url`: `str` — URL base do IMS para ambientes de preparação/alternativos. O padrão é produção.

`http_client`: `typing.Optional[httpx.Client]` — httpx opcional.Cliente para proxy, TLS ou pooling de conexão.

`on_token_refreshed`: `typing.Optional[typing.Callable[[dict[str, Any]], None]]` — Retorno de chamada opcional acionado após cada atualização de token.

`timeout`: `float` — Tempo-limite de solicitação HTTP em segundos. O padrão é 30.

`max_retries`: `int` — Número máximo de novas tentativas para falhas transitórias. O padrão é 2.

`refresh_buffer`: `int` — Segundos antes da expiração para acionar a atualização proativa. O padrão é 60. **Métodos**`get_token() -&gt; str` — Retorna um token de acesso válido, atualizando se necessário. Passe esta referência de método para o SDK: `Frameio(token=auth.get_token)`. `get_authorization_url(state: str) -&gt; str` — Cria a URL de autorização do Adobe IMS. Passe um valor CSRF/state opaco que será ecoado de volta. `exchange_code(code: str) -&gt; dict[str, Any]` — Troca um código de autorização por tokens de acesso e atualização. `refresh() -&gt; dict[str, Any]` — Aciona manualmente uma atualização de token. `revoke() -&gt; None` — Revoga ambos os tokens no lado do servidor e limpa o estado local. `export_tokens() -&gt; dict[str, Any]` — Exporta o estado atual do token para persistência. `import_tokens(data: dict[str, Any]) -&gt; None` — Restaura o estado do token a partir de um dict exportado anteriormente.

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

Autentica usando authorization\_code + PKCE (sem client secret). Use isso para aplicativos baseados em navegador ou aplicativos nativos que não conseguem armazenar um client secret com segurança. Para uso assíncrono, use `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)
```

**Parâmetros**

`client_id`: `str` — ID do cliente OAuth do Adobe IMS.

`redirect_uri`: `str` — URI de redirecionamento registrado.

`scopes`: `str` — Escopos separados por espaços (OAuth 2.0 RFC 6749).

`ims_base_url`: `str` — URL base do IMS para ambientes de preparação/alternativos. O padrão é produção.

`http_client`: `typing.Optional[httpx.Client]` — httpx opcional.Cliente para proxy, TLS ou pooling de conexão.

`on_token_refreshed`: `typing.Optional[typing.Callable[[dict[str, Any]], None]]` — Retorno de chamada opcional acionado após cada atualização de token.

`timeout`: `float` — Tempo-limite de solicitação HTTP em segundos. O padrão é 30.

`max_retries`: `int` — Número máximo de novas tentativas para falhas transitórias. O padrão é 2.

`refresh_buffer`: `int` — Segundos antes da expiração para acionar a atualização proativa. O padrão é 60. **Métodos**`get_token() -&gt; str` — Retorna um token de acesso válido, atualizando se necessário. Passe esta referência de método para o SDK: `Frameio(token=auth.get_token)`. `get_authorization_url(state: str) -&gt; AuthorizationUrlResult` — Cria a URL de autorização do Adobe IMS com desafio PKCE. Retorna um `AuthorizationUrlResult` com atributos `url` e `code_verifier`. `exchange_code(code: str, code_verifier: str) -&gt; dict[str, Any]` — Troca um código de autorização + verificador PKCE por tokens. `refresh() -&gt; dict[str, Any]` — Aciona manualmente uma atualização de token. `revoke() -&gt; None` — Revoga ambos os tokens no lado do servidor e limpa o estado local. `export_tokens() -&gt; dict[str, Any]` — Exporta o estado atual do token para persistência. `import_tokens(data: dict[str, Any]) -&gt; None` — Restaura o estado do token a partir de um dict exportado anteriormente.

#### frameio.auth.AuthorizationUrlResult

Dataclass congelada retornada por `SPAAuth.get_authorization_url()` e `AsyncSPAAuth.get_authorization_url()`. Mantém a URL de autorização e o verificador de código PKCE. **Atributos**`url`: `str` — A URL de autorização completa para a qual redirecionar o usuário. `code_verifier`: `str` — O verificador de código PKCE a ser armazenado e passado para `exchange_code()`.

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

Fecha os clientes HTTP em nível de módulo usados pelo módulo de autenticação. Chame `close_clients()` em código síncrono ou `await aclose_clients()` em código assíncrono durante o encerramento do aplicativo para liberar conexões.

**`usage`**

```python usage

from frameio.auth import close_clients

# During application shutdown
close_clients()
```

#### Exceções de autenticação

Todas as exceções de autenticação herdam de `FrameioAuthError`.

| Exceção               | Descrição                                                                                 |
| --------------------- | ----------------------------------------------------------------------------------------- |
| `FrameioAuthError`    | Exceção base para todos os erros de `frameio.auth`.                                       |
| `AuthenticationError` | Falha na troca ou atualização de token. Tem atributos `error_code` e `error_description`. |
| `TokenExpiredError`   | Token de atualização expirado; é necessária nova autenticação.                            |
| `ConfigurationError`  | A configuração obrigatória está ausente ou é inválida.                                    |
| `NetworkError`        | Falha na solicitação de rede (tempo-limite, erro de conexão etc.).                        |
| `RateLimitError`      | A API retornou 429 e as novas tentativas foram esgotadas. em atributo `retry_after`.      |
| `PKCEError`           | Falha na verificação PKCE.                                                                |

#### Coleções

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

Listar coleções de um projeto.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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,
)
```

**Parâmetros**

`account_id`: `Uuid` —

`project_id`: `Uuid` —

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

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

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> Esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Mostrar detalhes da coleção.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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",
)
```

**Parâmetros**

`account_id`: `Uuid` —

`collection_id`: `Uuid` —

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

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

#### Comentários

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

Mostrar um único comentário em um arquivo.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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",
)
```

**Parâmetros**

`account_id`: Uuid —

`comment_id`: Uuid —

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

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Excluir comentário de um ativo.

Limites de taxa: 60 chamadas por 1,00 minuto(s) por 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",
)
```

**Parâmetros**

`account_id`: Uuid —

`comment_id`: Uuid —

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Atualizar comentário no ativo fornecido.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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!",
    ),
)
```

**Parâmetros**

`account_id`: Uuid —

`comment_id`: Uuid —

`data`: UpdateCommentParamsData

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

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Listar comentários em um determinado ativo.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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
```

**Parâmetros**

`account_id`: Uuid —

`file_id`: Uuid —

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

`after`: typing.Optional\[RequestAfterOpaqueCursor]

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> Esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Criar um comentário em um arquivo.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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",
    ),
)
```

**Parâmetros**

`account_id`: Uuid —

`file_id`: Uuid —

`data`: CreateCommentParamsData

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

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Criar um anexo para um comentário existente.

Limites de taxa: 60 chamadas por 1,00 minuto(s) por 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",
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`comment_id`: `Uuid` —

`data`: `AttachmentInput`

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Excluir anexo de comentário.

Limites de taxa: 60 chamadas por 1,00 minuto(s) por 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",
)
```

**Parâmetros**

`account_id`: `Uuid` —

`comment_id`: `Uuid` —

`attachment_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

#### Ações personalizadas

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

Listar ações em um determinado espaço de trabalho.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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,
)
```

**Parâmetros**

`account_id`: `Uuid` —

`workspace_id`: `Uuid` —

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

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

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> Esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Expandir detalhes de ação personalizada.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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",
)
```

**Parâmetros**

`account_id`: `Uuid` —

`action_id`: `Uuid` —

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

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Cria uma ação personalizada em um espaço de trabalho.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`workspace_id`: `Uuid` —

`data`: `ActionCreateParamsData`

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Atualizar detalhes da ação personalizada.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`action_id`: `Uuid` —

`data`: `ActionUpdateParamsData`

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Excluir uma ação personalizada.

Limites de taxa: 60 chamadas por 1,00 minuto(s) por 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",
)
```

**Parâmetros**

`account_id`: `Uuid` —

`action_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

#### Arquivos

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

Listar arquivos de uma pasta específica.

Limites de taxa: 5 chamadas por 1 segundo(s) por 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,
)
```

**Parâmetros**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

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

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

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> Esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Criar novo arquivo na pasta principal.`Criar arquivo (fazer upload local)` e `Criar arquivo (fazer upload remoto)` substituíram este ponto de acesso.

Limites de taxa: 5 chamadas por 1 segundo(s) por 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",
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`data`: `FileCreateParamsData`

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Mostrar detalhes do arquivo.

Use o parâmetro de consulta include para incluir seletivamente propriedades adicionais na resposta.

> **Note**
>
> Se você incluir `media_links.original` e o usuário não tiver permissão para fazer download do arquivo, esse ponto de acesso responderá com um erro `403 Forbidden`.Se o conteúdo estiver inacessível porque a marca-d’água é obrigatória para esse usuário e não é compatível com os media\_links solicitados, a solicitação será bem-sucedida, mas os links de mídia incompatíveis serão definidos como null. Da mesma forma, se um link de transcodificação solicitado não existir para um arquivo específico (por exemplo, incluir `media_links.video_h264_180` em um arquivo de imagem estática) ou se o processo de transcodificação não tiver sido concluído (ou seja, o status do arquivo for "uploaded", em vez de "transcoded"), o link também será definido como null no conteúdo da resposta. Em resumo, o cliente deve lidar corretamente com links de mídia null.

Limites de taxa: 5 chamadas por 1 segundo(s) por 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",
)
```

**Parâmetros**

`account_id`: `Uuid` —

`file_id`: `Uuid` —

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

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Excluir arquivo por ID.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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",
)
```

**Parâmetros**

`account_id`: `Uuid` —

`file_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Atualizar detalhes do arquivo.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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",
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`file_id`: `Uuid` —

`data`: `FileUpdateParamsData`

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Copiar arquivo.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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",
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`file_id`: `Uuid` —

`copy_metadata`: `typing.Optional[bool]` — Whether to copy metadata values along with the file

`copy_comments`: `typing.Optional[FilesCopyRequestCopyComments]` — Which comments to copy along with the file

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

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Criar novo arquivo na pasta principal por meio de upload remoto.

Limites de taxa: 5 chamadas por 1 segundo(s) por 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",
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`data`: `FileCreateRemoteUploadParamsData`

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Mover arquivo para uma pasta ou version\_stack.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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",
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`file_id`: `Uuid` —

`data`: `FileMoveParamsData`

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Criar novo arquivo na pasta principal por meio de upload local.

Limites de taxa: 5 chamadas por 1 segundo(s) por 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",
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`data`: `FileCreateLocalUploadParamsData`

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Mostrar detalhes do status de upload do arquivo.

Limites de taxa: 5 chamadas por 1 segundo(s) por 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",
)
```

**Parâmetros**

`account_id`: `Uuid` —

`file_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Importar um arquivo de um local de armazenamento configurado na conta.

Limites de taxa: 5 chamadas por 1 segundo(s) por 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",
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`data`: `FileImportParamsData`

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

#### Permissões da pasta

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

Listar funções de usuário de uma determinada pasta.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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,
)
```

**Parâmetros**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`include_deactivated`: `typing.Optional[bool]` — Oferece suporte para incluir usuários desativados na resposta. O padrão é false.

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

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> Esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Atualizar funções de usuário para a pasta especificada se o usuário já tiver sido adicionado à pasta.Se o usuário não tiver sido adicionado à pasta, ele será adicionado com a função especificada.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`user_id`: `Uuid` —

`data`: `UpdateUserRolesParamsData`

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Remover um usuário de uma determinada pasta.

Limites de taxa: 60 chamadas por 1,00 minuto(s) por 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",
)
```

**Parâmetros**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`user_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

#### Pastas

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

Mostrar detalhes da pasta.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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",
)

```

**Parâmetros**

`account_id`: Uuid —

`folder_id`: Uuid —

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

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Excluir pasta por ID.

Limites de taxa: 60 chamadas por 1,00 minuto(s) por 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",
)

```

**Parâmetros**

`account_id`: Uuid —

`folder_id`: Uuid —

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Atualizar detalhes da pasta.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
    ),
)

```

**Parâmetros**

`account_id`: Uuid —

`folder_id`: Uuid —

`data`: FolderUpdateParamsData

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Listar as tarefas derivadas na pasta especificada.

Use o parâmetro de consulta include para incluir seletivamente propriedades adicionais na resposta.

> **Note**
>
> Se você incluir `media_links.original` e o usuário não tiver permissão para fazer download de arquivos no projeto correspondente, esse ponto de acesso responderá com um erro 403 Forbidden.Se o conteúdo estiver inacessível porque a marca-d’água é obrigatória para esse usuário e não é compatível com os media\_links solicitados, a solicitação será bem-sucedida, mas os links de mídia incompatíveis serão definidos como null. Da mesma forma, se um link de transcodificação solicitado não existir para um arquivo específico (por exemplo, incluir `media_links.video_h264_180` em um arquivo de imagem estática) ou o processo de transcodificação não tiver sido concluído (ou seja, o status do arquivo é "uploaded", em vez de "transcoded"), um link de mídia também será definido como null no conteúdo da resposta. Em resumo, o cliente deve lidar corretamente com links de mídia null.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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,
)

```

**Parâmetros**

`account_id`: Uuid —

`folder_id`: Uuid —

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

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

`after`: typing.Optional\[RequestAfterOpaqueCursor]

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Copiar pasta.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
    ),
)

```

**Parâmetros**

`account_id`: Uuid —

`folder_id`: Uuid —

`copy_metadata`: typing.Optional\[bool] — Se deve copiar os valores de metadados juntamente com a pasta

`data`: typing.Optional\[FolderCopyParamsData]

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Listar pastas em determinada pasta.

Limites de taxa: 5 chamadas por 1 segundo(s) por 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,
)

```

**Parâmetros**

`account_id`: Uuid —

`folder_id`: Uuid —

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

`after`: typing.Optional\[RequestAfterOpaqueCursor]

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Criar uma nova pasta dentro do parâmetro de caminho folder\_id especificado.

Limites de taxa: 3 chamadas por 1 segundo(s) por 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",
    ),
)

```

**Parâmetros**

`account_id`: Uuid —

`folder_id`: Uuid —

`data`: FolderCreateParamsData

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Mover pasta para uma pasta.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
    ),
)

```

**Parâmetros**

`account_id`: Uuid —

`folder_id`: Uuid —

`data`: FolderMoveParamsData

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

#### Grupos

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

Listar grupos na conta.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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,
)
```

**Parâmetros**

`account_id`: `Uuid` —

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

`sort`: `typing.Optional[GroupsIndexRequestSort]` — Ordenar grupos por parâmetros de consulta

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

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> Esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Mostrar detalhes do grupo.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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",
)
```

**Parâmetros**

`account_id`: `Uuid` —

`group_id`: `Uuid` —

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

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Criar grupo para a conta atual.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`data`: `CreateGroupParamsData`

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Atualizar detalhes do grupo.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`group_id`: `Uuid` —

`data`: `UpdateGroupParamsData`

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

#### Metadados

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

Atualizar valores de metadados em vários arquivos.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
                    },
                ],
            )
        ],
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`project_id`: `Uuid` —

`data`: `BulkUpdateMetadataParamsData`

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Mostrar os metadados de um arquivo.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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,
)
```

**Parâmetros**

`account_id`: `Uuid` —

`file_id`: `Uuid` —

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

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

#### Campos de metadados

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

Excluir definições de campos personalizados no nível da conta.

Limites de taxa: 60 chamadas por 1,00 minuto(s) por 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",
)

```

**Parâmetros**

`account_id`: Uuid —

`field_definition_id`: Uuid —

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Atualizar definições de campos personalizados no nível da conta.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
    ),
)

```

**Parâmetros**

`account_id`: Uuid —

`field_definition_id`: Uuid —

`data`: typing.Optional\[UpdateFieldDefinitionParamsData]

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Listar definições de campos no nível da conta.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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,
)

```

**Parâmetros**

`account_id`: Uuid —

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

`after`: typing.Optional\[RequestAfterOpaqueCursor]

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Criar definições de campos no nível da conta.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
    ),
)

```

**Parâmetros**

`account_id`: Uuid —

`data`: typing.Optional\[CreateFieldDefinitionParamsData]

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

#### Permissões do projeto

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

Listar funções de usuário para determinado projeto.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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

```

**Parâmetros**

`account_id`: Uuid —

`project_id`: Uuid —

`include_deactivated`: typing.Optional\[bool] — Compatível com a inclusão de usuários desativados na resposta. O padrão é false.

`after`: typing.Optional\[RequestAfterOpaqueCursor]

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> NOTAS: esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Remover um usuário de determinado projeto.

Limites de taxa: 60 chamadas por 1,00 minuto(s) por 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",
)

```

**Parâmetros**

`account_id`: Uuid —

`project_id`: Uuid —

`user_id`: Uuid —

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Atualizar funções de usuário para determinado projeto se o usuário já tiver sido adicionado ao projeto. Se o usuário não tiver sido adicionado ao projeto, ele será adicionado com a função especificada.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
    ),
)

```

**Parâmetros**

`account_id`: Uuid —

`project_id`: Uuid —

`user_id`: Uuid —

`data`: UpdateUserRolesParamsData

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

#### Projetos

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

Mostrar detalhes do projeto.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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",
)
```

**Parâmetros**

`account_id`: `Uuid` —

`project_id`: `Uuid` —

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

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Excluir um projeto.

Limites de taxa: 60 chamadas por 1,00 minuto(s) por 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",
)
```

**Parâmetros**

`account_id`: `Uuid` —

`project_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Atualizar detalhes do projeto.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`project_id`: `Uuid` —

`data`: `ProjectUpdateParamsData`

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Listar projetos em determinado espaço de trabalho.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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
```

**Parâmetros**

`account_id`: `Uuid` —

`workspace_id`: `Uuid` —

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

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

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> Esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Criar projeto em determinado espaço de trabalho.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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,
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`workspace_id`: `Uuid` —

`data`: `ProjectParamsData`

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Listar todos os projetos aos quais o usuário autenticado tem acesso dentro da conta especificada.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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
```

**Parâmetros**

`account_id`: `Uuid` —

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

`sort`: `typing.Optional[AccountProjectsIndexRequestSort]` — Sort projects by query params

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

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> Esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Listar projetos para os quais o usuário atual foi convidado dentro da conta especificada, mas para os quais não tem acesso no nível do espaço de trabalho.Esses são projetos nos quais o usuário tem acesso de colaborador específico do projeto, sem permissões mais amplas de equipe/espaço de trabalho.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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
```

**Parâmetros**

`account_id`: `Uuid` —

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

`sort`: `typing.Optional[InvitedProjectsIndexRequestSort]` — Sort projects by query params

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

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> Esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

#### Pesquisa

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

Pesquisar ativos, pastas e projetos em uma conta.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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,
)
```

**Parâmetros**

`account_id`: `Uuid` —

`engine`: `SearchParamsEngine` — Mecanismo de busca a ser utilizado. Mecanismos disponíveis: lexical, nlp.

`query`: `str` — O texto da consulta de pesquisa

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

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> Esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`filters`: `typing.Optional[SearchParamsFilters]` — Filters to control which types of results are returned

`request_options`: `typing.Optional[RequestOptions]` — Configurações específicas da solicitação.

#### Compartilhamentos

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

Mostrar um único Compartilhamento.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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",
)
```

**Parâmetros**

`account_id`: `Uuid` —

`share_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Excluir um compartilhamento.

Limites de taxa: 60 chamadas por 1,00 minuto(s) por 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",
)

```

**Parâmetros**

`account_id`: `Uuid` —

`share_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Atualizar compartilhamento.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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(*",
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`share_id`: `Uuid`—

`data`: `UpdateShareParamsData`

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Listar revisores de compartilhamento.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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
```

**Parâmetros**

`account_id`: `Uuid` —

`share_id`: `Uuid`—

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

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> Esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Adicionar revisores ao compartilhamento seguro por três tipos de identificador: `adobe_user_id`, `email` e `user_id`.

Uma solicitação pode incluir apenas um parâmetro de tipo de identificador.

`email` é o único identificador capaz de adicionar revisores a um Compartilhamento que não tenham uma conta de membro do Frame na conta à qual o Compartilhamento pertence.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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"],
        ),
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`share_id`: `Uuid`—

`data`: `AddReviewersToShareParamsData`

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Remove revisores do Compartilhar seguro por três tipos de identificador: `adobe_user_id`, `email` e `user_id`.

Uma solicitação pode incluir apenas um parâmetro de tipo de identificador.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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"
            ],
        ),
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`share_id`: `Uuid`—

`data`: `RemoveReviewerParamsData`

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Remover desse compartilhamento um ativo que está atualmente no compartilhamento.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
)
```

**Parâmetros**

`account_id`: `Uuid` —

`share_id`: `Uuid`—

`asset_id`: `Uuid`—

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Adicionar novo compartilhamento de ativo.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`share_id`: `Uuid`—

`data`: `AddAssetParamsData`

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Listar compartilhamentos em um projeto.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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
```

**Parâmetros**

`account_id`: `Uuid` —

`project_id`: `Uuid`—

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

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> Esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Criar compartilhamento.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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(*",
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`project_id`: `Uuid`—

`data`: `CreateShareParamsData`

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

#### Upload

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

Fazer upload de um arquivo local para o Frame.io usando as URLs pré-assinadas retornadas por `client.files.create_local_upload(...)`. `FrameioUploader` é um wrapper leve que lê `upload_urls`, `file_size` e `media_type` e da resposta `FileWithUploadUrls` e executa um upload S3 em partes e multithread.

**`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()
```

**Parâmetros**

`asset`: `FileWithUploadUrls` — A `FileWithUploadUrls` instance returned by `client.files.create_local_upload(...)`.

`file`: `typing.BinaryIO` — Um objeto tipo arquivo aberto no modo de leitura binária (`"rb"`).

`max_workers`: `int` — Concorrência do pool de threads passada para o uploader subjacente. O padrão é 5

`headers`: `typing.Optional[typing.Dict[str, str]]` — Cabeçalhos adicionais mesclados em cada solicitação PUT S3. Padrão para `{"x-amz-acl": "private"}` conforme exigido pelo Frame.io.

`max_retries`: `int` — Número de tentativas de repetição por fragmento. O padrão é 3

`on_progress`: `typing.Optional[typing.Callable[[int, int], None]]` — Callback opcional invocado após cada fragmento com `(bytes_uploaded_so_far, total_bytes)`.

**Métodos**

`upload() -> None` — Fazer upload do arquivo. Bloqueia até completar ou gera erro.

#### Usuários

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

Inspecionar detalhes do usuário associado ao token bearer.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por account\_user

**`usage`**

```python usage

from frameio import Frameio

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

**Parâmetros**

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

#### Pilhas de versões

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

Listar as tarefas derivadas (arquivos) em uma pilha de versões especificada.

Use o parâmetro de consulta include para incluir seletivamente propriedades adicionais na resposta.

> **Note**
>
> Se você incluir `media_links.original` e o usuário não tiver permissão para fazer download de arquivos no projeto correspondente, esse ponto de acesso responderá com um erro `403 Forbidden`. Se o conteúdo estiver inacessível porque a marca-d’água é obrigatória para esse usuário e não é compatível com os media\_links solicitados, a solicitação será bem-sucedida, mas os links de mídia incompatíveis serão definidos como null. Da mesma forma, se um link de transcodificação solicitado não existir para um arquivo específico (por exemplo, incluir `media_links.video_h264_180` em um arquivo de imagem estática) ou o processo de transcodificação não tiver sido concluído (ou seja, o status do arquivo é "uploaded", em vez de "transcoded"), um link de mídia também será definido como null no conteúdo da resposta. Em resumo, o cliente deve lidar com links de mídia null corretamente.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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,
)

```

**Parâmetros**

`account_id`: Uuid —

`version_stack_id`: Uuid —

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

`after`: typing.Optional\[RequestAfterOpaqueCursor]

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> Esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Mostrar detalhes da pilha de versão.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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",
)

```

**Parâmetros**

`account_id`: Uuid —

`version_stack_id`: Uuid —

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

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Copiar pilha de versões.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
    ),
)

```

**Parâmetros**

`account_id`: Uuid —

`version_stack_id`: Uuid —

`copy_metadata`: typing.Optional\[bool] — Se copiar valores de metadados junto com a pilha de versões

`data`: typing.Optional\[VersionStackCopyParamsData]

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Listar pilhas de versões em uma pasta especificada.

Limites de taxa: 5 chamadas por 1 segundo(s) por 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,
)

```

**Parâmetros**

`account_id`: Uuid —

`folder_id`: Uuid —

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

`after`: typing.Optional\[RequestAfterOpaqueCursor]

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> Esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Criar uma nova Pilha de versões na pasta principal.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
        ],
    ),
)

```

**Parâmetros**

`account_id`: Uuid —

`folder_id`: Uuid —

`data`: VersionStackCreateParamsData

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Mover pilha de versões para uma pasta.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
    ),
)

```

**Parâmetros**

`account_id`: Uuid —

`version_stack_id`: Uuid —

`data`: VersionStackMoveParamsData

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

#### Webhooks

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

Listar webhooks para determinado espaço de trabalho.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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
```

**Parâmetros**

`account_id`: Uuid —

`workspace_id`: Uuid —

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

`after`: typing.Optional\[RequestAfterOpaqueCursor]

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> Esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Cria um único webhook com segredo.

Eventos válidos:

`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`.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por conta

**`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",
    ),
)

```

**Parâmetros**

`account_id`: Uuid —

`workspace_id`: Uuid —

`data`: WebhookCreateParamsData

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Mostrar detalhes do webhook.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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",
)
```

**Parâmetros**

`account_id`: Uuid —

`webhook_id`: Uuid —

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

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Excluir um webhook.

Limites de taxa: 60 chamadas por 1,00 minuto(s) por 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",
)
```

**Parâmetros**

`account_id`: Uuid —

`webhook_id`: Uuid —

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Atualizar detalhes do webhook.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
    ),
)
```

**Parâmetros**

`account_id`: Uuid —

`webhook_id`: Uuid —

`data`: WebhookUpdateParamsData

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

#### Permissões do espaço de trabalho

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

Listar funções de usuário para determinado espaço de trabalho.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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
```

**Parâmetros**

`account_id`: `Uuid` —

`workspace_id`: `Uuid` —

`includ_deactivated`: `typing.Optional[bool]` — Oferece suporte para incluir usuários desativados na resposta. O padrão é false.

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

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> Esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Remove um usuário de determinado espaço de trabalho.

Limites de taxa: 60 chamadas por 1,00 minuto(s) por 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",
)

```

**Parâmetros**

`account_id`: `Uuid` —

`workspace_id`: `Uuid` —

`user_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

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

Atualizar funções de usuário para determinado espaço de trabalho se o usuário já tiver sido adicionado ao espaço de trabalho. Se o usuário não tiver sido adicionado ao espaço de trabalho, ele será adicionado com a função especificada.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
    ),
)
```

**Parâmetros**

`account_id`: `Uuid` —

`workspace_id`: `Uuid`—

`user_id`: `Uuid` —

`data`: `UpdateUserRolesParamsData`

`request_options`: `typing.Optional[RequestOptions]` — Configuração específica da solicitação.

#### Espaços de trabalho

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

Mostrar detalhes do espaço de trabalho.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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",
)
```

**Parâmetros**

`account_id`: Uuid —

`workspace_id`: Uuid —

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

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

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

Excluir espaço de trabalho da conta.

Limites de taxa: 60 chamadas por 1,00 minuto(s) por 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",
)

```

**Parâmetros**

`account_id`: Uuid —

`workspace_id`: Uuid —

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

#### client.workspaces.update(...) -> AsyncHttpResponse\[WorkspaceResponse]

Atualizar um espaço de trabalho.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
    ),
)
```

**Parâmetros**

`account_id`: Uuid —

`workspace_id`: Uuid —

`data`: WorkspaceParamsData

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

#### client.workspaces.index(...) -> AsyncPager\[WorkspaceWithIncludes, WorkspacesWithIncludesResponse]

Listar espaços de trabalho para determinada conta.

Limites de taxa: 100 chamadas por 1,00 minuto(s) por 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
```

**Parâmetros**

`account_id`: Uuid —

`workspace_id`: Uuid —

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

after: typing.Optional\[RequestAfterOpaqueCursor]

Parâmetro de consulta de cursor opaco para solicitações que retornam resultados paginados.

> **Tip**
>
> Esse valor é gerado automaticamente e incluído como parte de links de uma resposta anterior. Não foi criado para ser legível por humanos.

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

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

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

#### client.workspaces.create(...) -> AsyncHttpResponse\[WorkspaceResponse]

Criar espaço de trabalho a partir de uma conta.

Limites de taxa: 10 chamadas por 1,00 minuto(s) por 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",
    ),
)
```

**Parâmetros**

`account_id`: Uuid —

`data`: WorkspaceParamsData

`request_options`: typing.Optional\[RequestOptions] — Configuração específica da solicitação.

---

### PyPI

> **Launch**
>
> Visualizar no [PyPI](https://pypi.org/project/frameio/)

---