> This page is for 플랫폼, version V4 (default).
> For other versions, use one of these documentation indexes:
> - V4 (default): https://next.developer.frame.io/platform/v4/llms.txt
> - V4 실험적: https://next.developer.frame.io/platform/v4-experimental/llms.txt
> - 레거시: https://next.developer.frame.io/platform/v2/llms.txt

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

# Python SDK 참조

### 설치

```curl
pip install frameio
```

---

### 사용량

다음을 사용하여 클라이언트를 인스턴스화하고 사용합니다.

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

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

---

### 비동기 클라이언트

또한 SDK는 API에 비차단 호출을 할 수 있도록 비동기 클라이언트도 함께 내보냅니다. 이 클라이언트에 전달할 Async httpx 클라이언트 클래스를 구성하는 경우(예: 이 클라이언트의 httpx\_client 매개변수에 대해), httpx.Client() 대신 httpx.AsyncClient()를 사용해야 한다는 점에 유의하세요.

```python
import asyncio

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

client = AsyncFrameio(
    token="YOUR_TOKEN",
)


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


asyncio.run(main())
```

---

### 예외 처리

API가 실패 상태 코드(4xx 또는 5xx 응답)를 반환하면 다음 오류의 하위 클래스가 발생합니다.

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

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

---

### 페이지 매김

페이지가 매겨진 요청은 SyncPager 또는 AsyncPager를 반환하며, 이는 기본 오브젝트에 대한 제너레이터로 사용할 수 있습니다.

```python
from frameio import Frameio

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

---

### 고급

#### 원시 응답 데이터에 액세스하기

SDK는 .with\_raw\_response 속성을 통해 헤더를 포함한 원시 응답 데이터에 대한 액세스를 제공합니다. .with\_raw\_response 속성은 .headers 및 .data 속성에 액세스하는 데 사용할 수 있는 "원시" 클라이언트를 반환합니다.

```python
from frameio import Frameio

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

---

#### 재시도

SDK에는 지수 백오프 방식의 자동 재시도 기능이 구현되어 있습니다. 요청이 재시도 가능한 것으로 간주되고, 재시도 횟수가 구성된 재시도 제한(기본값: 2)을 초과하지 않는 한 요청이 재시도됩니다.

다음 HTTP 상태 코드 중 하나가 반환될 때 요청은 재시도 가능한 것으로 간주됩니다.

* 408(시간 초과)
* 429(너무 많은 요청)
* 5XX(내부 서버 오류)

\
&#x20;이 동작을 구성하려면 `max_retries` 요청 옵션을 사용하세요.

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

---

#### 시간 초과

SDK는 기본적으로 60초의 시간 초과 값을 사용합니다. 클라이언트 또는 요청 수준에서 timeout 옵션을 사용하여 이를 구성할 수 있습니다.

```python
from frameio import Frameio

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


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

---

#### 사용자 지정 클라이언트

httpx 클라이언트를 재정의하여 특정 사용 사례에 맞게 사용자 지정할 수 있습니다. 일부 일반적인 사용 사례로는 프록시 및 전송 지원 등이 있습니다.

```python
import httpx
from frameio import Frameio

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

---

### 참조

#### 계정 권한

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

지정된 계정의 사용자 역할을 나열합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

```

**매개변수**

`account_id`: Uuid —

`include_deactivated`: typing.Optional\[bool] — 비활성화된 사용자를 응답에 포함하도록 지원합니다. 기본값은 false입니다.

`after`: typing.Optional\[RequestAfterOpaqueCursor]

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

#### 계정

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

현재 사용자의 계정을 나열합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`after`: typing.Optional\[RequestAfterOpaqueCursor]

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

쿼리 매개변수를 통해 필터링 기능을 사용하여 감사 로그를 나열합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

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

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

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

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

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

#### 인증

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

OAuth 2.0의 client\_credentials 권한 부여를 사용하여 인증합니다. 이 흐름에는 사용자가 관여하지 않으며 새로 고침 토큰도 반환되지 않습니다. 액세스 토큰이 만료되면 SDK가 클라이언트 자격 증명을 사용하여 새 토큰을 자동으로 요청합니다. 비동기 사용 시에는 `AsyncServerToServerAuth`를 사용합니다.

**`usage`**

```python usage

from frameio import Frameio
from frameio.auth import ServerToServerAuth

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

**매개변수**

`client_id`: `str` — Adobe IMS OAuth 클라이언트 ID입니다.

`client_secret`: `str` — Adobe IMS OAuth 클라이언트 시크릿입니다.

`scopes`: `str` — 공백으로 구분된 권한 목록입니다(OAuth 2.0 RFC 6749). 기본값은 `openid AdobeID frame.s2s.all`입니다.

`ims_base_url`: `str` — 스테이징 및 대안 환경을 위한 IMS 기본 URL입니다. 기본값은 프로덕션입니다.

`http_client`: `typing.Optional[httpx.Client]` — 선택 사항인 httpx입니다.프록시, TLS, 또는 연결 풀링을 위한 클라이언트입니다.

`on_token_refreshed`: `typing.Optional[typing.Callable[[dict[str, Any]], None]]` — 토큰을 가져올 때마다 실행되는 선택적 콜백입니다.

`timeout`: `float` — HTTP 요청 시간 초과(초 단위)입니다. 기본값은 30입니다.

`max_retries`: `int` — 일시적인 오류 발생 시 최대 재시도 횟수입니다. 기본값은 2입니다.

`refresh_buffer`: `int` — 사전 새로 고침을 트리거하기 위한 만료 전 초 단위 시간입니다. 기본값은 60입니다. **메서드**`get_token() -&gt; str` — 필요한 경우 새로 고침을 수행하며 유효한 액세스 토큰을 반환합니다. 이 메서드에 대한 참조(호출이 아님)를 SDK에 전달합니다. `Frameio(token=auth.get_token)`. `authenticate() -&gt; dict[str, Any]` — 새 액세스 토큰을 명시적으로 가져옵니다. `access_token`, `expires_in` 등이 포함된 토큰 응답 사전을 반환합니다. `revoke() -&gt; None` — 서버 측에서 두 토큰 모두를 취소하고 로컬 상태를 지웁니다. `export_tokens() -&gt; dict[str, Any]` — 지속성을 위해 현재 토큰 상태를 내보냅니다. `import_tokens(data: dict[str, Any]) -&gt; None` — 이전에 내보낸 사전(dict)에서 토큰 상태를 복원합니다.

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

OAuth 2.0 authorization\_code 권한 부여를 사용하여 인증합니다. 클라이언트 시크릿을 안전하게 저장할 수 있는 서버 측 애플리케이션에 이 방식을 사용하세요. 비동기 사용 시에는 `AsyncWebAppAuth`를 사용합니다.

**`usage`**

```python usage

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

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

**매개변수**

`client_id`: `str` — Adobe IMS OAuth 클라이언트 ID입니다.

`client_secret`: `str` — Adobe IMS OAuth 클라이언트 시크릿입니다.

`redirect_uri`: `str` — 등록된 리디렉션 URI입니다.

`scopes`: `str` — 공백으로 구분된 권한 목록입니다(OAuth 2.0 RFC 6749).

`ims_base_url`: `str` — 스테이징 및 대안 환경을 위한 IMS 기본 URL입니다. 기본값은 프로덕션입니다.

`http_client`: `typing.Optional[httpx.Client]` — 선택 사항인 httpx입니다.프록시, TLS, 또는 연결 풀링을 위한 클라이언트입니다.

`on_token_refreshed`: `typing.Optional[typing.Callable[[dict[str, Any]], None]]` — 토큰 새로 고침 후마다 실행되는 선택적 콜백입니다.

`timeout`: `float` — HTTP 요청 시간 초과(초 단위)입니다. 기본값은 30입니다.

`max_retries`: `int` — 일시적인 오류 발생 시 최대 재시도 횟수입니다. 기본값은 2입니다.

`refresh_buffer`: `int` — 사전 새로 고침을 트리거하기 위한 만료 전 초 단위 시간입니다. 기본값은 60입니다. **메서드**`get_token() -&gt; str` — 필요한 경우 새로 고침을 수행하며 유효한 액세스 토큰을 반환합니다. 이 메서드에 대한 참조를 SDK에 전달합니다: `Frameio(token=auth.get_token)`. `get_authorization_url(state: str) -&gt; str` — Adobe IMS 인증 URL을 빌드합니다. 반환될 불투명한 CSRF/상태 값을 전달합니다. `exchange_code(code: str) -&gt; dict[str, Any]` — 권한 부여 코드를 액세스 및 새로 고침 토큰으로 교환합니다. `refresh() -&gt; dict[str, Any]` — 수동으로 토큰 새로 고침을 트리거합니다. `revoke() -&gt; None` — 서버 측에서 두 토큰 모두를 취소하고 로컬 상태를 지웁니다. `export_tokens() -&gt; dict[str, Any]` — 지속성을 위해 현재 토큰 상태를 내보냅니다. `import_tokens(data: dict[str, Any]) -&gt; None` — 이전에 내보낸 사전(dict)에서 토큰 상태를 복원합니다.

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

authorization\_code + PKCE(클라이언트 시크릿 없음)를 사용하여 인증합니다. 클라이언트 시크릿을 안전하게 저장할 수 없는 브라우저 기반 앱이나 네이티브 앱에 이 방식을 사용하세요. 비동기(async) 사용 시에는 `AsyncSPAAuth`를 사용합니다.

**`usage`**

```python usage

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

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

**매개변수**

`client_id`: `str` — Adobe IMS OAuth 클라이언트 ID입니다.

`redirect_uri`: `str` — 등록된 리디렉션 URI입니다.

`scopes`: `str` — 공백으로 구분된 권한 목록입니다(OAuth 2.0 RFC 6749).

`ims_base_url`: `str` — 스테이징 및 대안 환경을 위한 IMS 기본 URL입니다. 기본값은 프로덕션입니다.

`http_client`: `typing.Optional[httpx.Client]` — 선택 사항인 httpx입니다.프록시, TLS, 또는 연결 풀링을 위한 클라이언트입니다.

`on_token_refreshed`: `typing.Optional[typing.Callable[[dict[str, Any]], None]]` — 토큰 새로 고침 후마다 실행되는 선택적 콜백입니다.

`timeout`: `float` — HTTP 요청 시간 초과(초 단위)입니다. 기본값은 30입니다.

`max_retries`: `int` — 일시적인 오류 발생 시 최대 재시도 횟수입니다. 기본값은 2입니다.

`refresh_buffer`: `int` — 사전 새로 고침을 트리거하기 위한 만료 전 초 단위 시간입니다. 기본값은 60입니다. **메서드**`get_token() -&gt; str` — 필요한 경우 새로 고침을 수행하며 유효한 액세스 토큰을 반환합니다. 이 메서드에 대한 참조를 SDK에 전달합니다: `Frameio(token=auth.get_token)`. `get_authorization_url(state: str) -&gt; AuthorizationUrlResult` — PKCE 챌린지를 사용하여 Adobe IMS 인증 URL을 빌드합니다. `url` 및 `code_verifier` 속성을 포함하는 `AuthorizationUrlResult`를 반환합니다. `exchange_code(code: str, code_verifier: str) -&gt; dict[str, Any]` — 권한 부여 코드 + PKCE 검증자(verifier)를 토큰으로 교환합니다. `refresh() -&gt; dict[str, Any]` — 수동으로 토큰 새로 고침을 트리거합니다. `revoke() -&gt; None` — 서버 측에서 두 토큰 모두를 취소하고 로컬 상태를 지웁니다. `export_tokens() -&gt; dict[str, Any]` — 지속성을 위해 현재 토큰 상태를 내보냅니다. `import_tokens(data: dict[str, Any]) -&gt; None` — 이전에 내보낸 사전(dict)에서 토큰 상태를 복원합니다.

#### frameio.auth.AuthorizationUrlResult

`SPAAuth.get_authorization_url()` 및 `AsyncSPAAuth.get_authorization_url()`에서 반환하는 고정 데이터 클래스(dataclass)입니다. 인증 URL 및 PKCE 코드 검증자를 보관합니다. **속성**`url`: `str` — 사용자를 리디렉션할 전체 인증 URL입니다. `code_verifier`: `str` — 저장해 두었다가 `exchange_code()`에 전달할 PKCE 코드 검증자입니다.

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

인증 모듈에서 사용하는 모듈 수준 HTTP 클라이언트를 닫습니다. 애플리케이션 종료 시 연결을 해제하려면 동기 코드에서는 `close_clients()`를 호출하고, 비동기 코드에서는 `await aclose_clients()`를 호출합니다.

**`usage`**

```python usage

from frameio.auth import close_clients

# During application shutdown
close_clients()
```

#### 인증 예외

모든 인증 예외는 `FrameioAuthError`에서 상속됩니다.

| 예외                    | 설명                                                                   |
| --------------------- | -------------------------------------------------------------------- |
| `FrameioAuthError`    | 모든 `frameio.auth` 오류에 대한 기본 예외입니다.                                   |
| `AuthenticationError` | 토큰 교환 또는 새로 고침에 실패했습니다. `error_code` 및 `error_description` 속성이 있습니다. |
| `TokenExpiredError`   | 새로 고침 토큰이 만료되었습니다. 재인증이 필요합니다.                                       |
| `ConfigurationError`  | 필수 구성이 누락되었거나 유효하지 않습니다.                                             |
| `NetworkError`        | 네트워크 요청에 실패했습니다(시간 초과, 연결 오류 등).                                     |
| `RateLimitError`      | API가 429를 반환했으며 재시도 횟수가 소진되었습니다. `retry_after` 속성이 있습니다.             |
| `PKCEError`           | PKCE 확인에 실패했습니다.                                                     |

#### 컬렉션

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

프로젝트의 컬렉션 나열.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`project_id`: `Uuid` —

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

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

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

컬렉션 세부 정보 표시.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`collection_id`: `Uuid` —

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

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

#### 코멘트

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

파일의 단일 코멘트를 표시합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: Uuid —

`comment_id`: Uuid —

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

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

에셋에서 코멘트를 삭제합니다.

요청 제한: account\_user당 1.00분당 60회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: Uuid —

`comment_id`: Uuid —

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

지정된 에셋에 대한 코멘트를 업데이트합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.comments import UpdateCommentParamsData

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

**매개변수**

`account_id`: Uuid —

`comment_id`: Uuid —

`data`: UpdateCommentParamsData

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

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

지정된 에셋에 대한 코멘트를 나열합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: Uuid —

`file_id`: Uuid —

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

`after`: typing.Optional\[RequestAfterOpaqueCursor]

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

파일에 코멘트를 생성합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.comments import CreateCommentParamsData

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

**매개변수**

`account_id`: Uuid —

`file_id`: Uuid —

`data`: CreateCommentParamsData

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

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

기존 코멘트의 첨부 파일 생성.

요청 제한: account\_user당 1.00분당 60회 호출

**`usage`**

```python usage

from frameio import AttachmentInput, Frameio

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

**매개변수**

`account_id`: `Uuid` —

`comment_id`: `Uuid` —

`data`: `AttachmentInput`

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

코멘트에서 첨부 파일 삭제.

요청 제한: account\_user당 1.00분당 60회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`comment_id`: `Uuid` —

`attachment_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

#### 사용자 지정 작업

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

지정된 작업 영역의 작업 나열.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`workspace_id`: `Uuid` —

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

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

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

사용자 지정 작업의 세부 정보를 표시합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`action_id`: `Uuid` —

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

`request_options`: `typing.Optional[RequestOptions]` — Request-specific configuration.

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

작업 영역에 사용자 지정 작업을 생성합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.custom_actions import ActionCreateParamsData

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

**매개변수**

`account_id`: `Uuid` —

`workspace_id`: `Uuid` —

`data`: `ActionCreateParamsData`

`request_options`: `typing.Optional[RequestOptions]` — Request-specific configuration.

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

사용자 지정 작업의 세부 정보를 업데이트합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.custom_actions import ActionUpdateParamsData

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

**매개변수**

`account_id`: `Uuid` —

`action_id`: `Uuid` —

`data`: `ActionUpdateParamsData`

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

사용자 지정 작업을 삭제합니다.

요청 제한: account\_user당 1.00분당 60회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`action_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

#### Files

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

지정된 폴더에 있는 파일을 나열합니다.

속도 제한: account\_user당 1초당 5회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

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

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

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

상위 폴더 아래에 새 파일을 만듭니다. `파일 생성(로컬 업로드)`과 `파일 생성(원격 업로드)`이 이 엔드포인트를 대체했습니다.

속도 제한: account\_user당 1초당 5회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.files import FileCreateParamsData

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

**매개변수**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`data`: `FileCreateParamsData`

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

파일 세부 정보를 표시합니다.

응답에 추가 속성을 선택적으로 포함하려면 include 쿼리 매개변수를 사용하세요.

> **Note**
>
> `media_links.original`을 포함했는데 사용자에게 파일을 다운로드할 권한이 없는 경우, 이 엔드포인트는 `403 Forbidden` 오류로 응답합니다. 이 사용자에 대해 워터마크가 요구되지만 요청된 media\_links에서 이를 지원하지 않아 콘텐츠에 액세스할 수 없는 경우, 요청은 성공하지만 지원되지 않는 미디어 링크는 null로 설정됩니다. 마찬가지로 특정 파일에 대해 요청된 트랜스코드 링크가 존재하지 않거나(예: 정적 이미지 파일에 `media_links.video_h264_180` 포함) 트랜스코딩 프로세스가 완료되지 않은 경우(즉, 파일의 상태가 "transcoded"가 아닌 "uploaded"인 경우), 응답 페이로드의 링크 역시 null로 설정됩니다. 즉, 클라이언트는 null로 처리된 미디어 링크를 원활하게 처리할 수 있어야 합니다.

속도 제한: account\_user당 1초당 5회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`file_id`: `Uuid` —

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

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

ID로 파일을 삭제합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`file_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

파일 세부 정보를 업데이트합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.files import FileUpdateParamsData

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

**매개변수**

`account_id`: `Uuid` —

`file_id`: `Uuid` —

`data`: `FileUpdateParamsData`

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

파일을 복사합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.files import FileCopyParamsData

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

**매개변수**

`account_id`: `Uuid` —

`file_id`: `Uuid` —

`copy_metadata`: `typing.Optional[bool]` — 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]` — 요청별 구성입니다.

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

원격 업로드를 통해 상위 폴더 아래에 새 파일을 생성합니다.

속도 제한: account\_user당 1초당 5회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.files import FileCreateRemoteUploadParamsData

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

**매개변수**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`data`: `FileCreateRemoteUploadParamsData`

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

파일을 폴더 또는 version\_stack으로 이동합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.files import FileMoveParamsData

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

**매개변수**

`account_id`: `Uuid` —

`file_id`: `Uuid` —

`data`: `FileMoveParamsData`

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

로컬 업로드를 통해 상위 폴더 아래에 새 파일을 생성합니다.

속도 제한: account\_user당 1초당 5회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.files import FileCreateLocalUploadParamsData

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

**매개변수**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`data`: `FileCreateLocalUploadParamsData`

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

파일 업로드 상태 세부 정보를 표시합니다.

속도 제한: account\_user당 1초당 5회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`file_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

계정에 구성된 저장 위치에서 파일을 가져옵니다.

속도 제한: account\_user당 1초당 5회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.files import FileImportParamsData

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

**매개변수**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`data`: `FileImportParamsData`

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

#### 폴더 권한

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

지정된 폴더의 사용자 역할을 나열합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`include_deactivated`: `typing.Optional[bool]` — 비활성화된 사용자를 응답에 포함하도록 지원합니다. 기본값은 false입니다.

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

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

사용자가 이미 폴더에 추가된 경우 지정된 폴더의 사용자 역할을 업데이트합니다. 사용자가 폴더에 추가되지 않은 경우 해당 사용자는 지정된 역할로 추가됩니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio, UpdateUserRolesParamsData

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

**매개변수**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`user_id`: `Uuid` —

`data`: `UpdateUserRolesParamsData`

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

지정된 폴더에서 사용자를 제거합니다.

요청 제한: account\_user당 1.00분당 60회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`folder_id`: `Uuid` —

`user_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

#### 폴더

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

폴더 세부 정보를 표시합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

```

**매개변수**

`account_id`: Uuid —

`folder_id`: Uuid —

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

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

ID로 폴더를 삭제합니다.

요청 제한: account\_user당 1.00분당 60회 호출

**`usage`**

```python usage

from frameio import Frameio

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

```

**매개변수**

`account_id`: Uuid —

`folder_id`: Uuid —

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

폴더 세부 정보를 업데이트합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.folders import FolderUpdateParamsData

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

```

**매개변수**

`account_id`: Uuid —

`folder_id`: Uuid —

`data`: FolderUpdateParamsData

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

지정된 폴더의 하위 항목을 나열합니다.

응답에 추가 속성을 선택적으로 포함하려면 include 쿼리 매개변수를 사용하세요.

> **Note**
>
> `media_links.original`을 포함했는데 사용자에게 해당 프로젝트에서 파일을 다운로드할 권한이 없는 경우, 이 엔드포인트는 403 Forbidden 오류로 응답합니다. 이 사용자에 대해 워터마크가 요구되지만 요청된 media\_links에서 이를 지원하지 않아 콘텐츠에 액세스할 수 없는 경우, 요청은 성공하지만 지원되지 않는 미디어 링크는 null로 설정됩니다. 마찬가지로 특정 파일에 대해 요청된 트랜스코드 링크가 존재하지 않거나(예: 정적 이미지 파일에 `media_links.video_h264_180` 포함) 트랜스코딩 프로세스가 완료되지 않은 경우(즉, 파일의 상태가 "transcoded"가 아닌 "uploaded"인 경우), 응답 페이로드의 미디어 링크 역시 null로 설정됩니다. 즉, 클라이언트는 null로 처리된 미디어 링크를 원활하게 처리할 수 있어야 합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

```

**매개변수**

`account_id`: Uuid —

`folder_id`: Uuid —

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

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

`after`: typing.Optional\[RequestAfterOpaqueCursor]

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

폴더를 복사합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.folders import FolderCopyParamsData

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

```

**매개변수**

`account_id`: Uuid —

`folder_id`: Uuid —

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

`data`: typing.Optional\[FolderCopyParamsData]

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

지정된 폴더의 하위 폴더들을 나열합니다.

속도 제한: account\_user당 1초당 5회 호출

**`usage`**

```python usage

from frameio import Frameio

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

```

**매개변수**

`account_id`: Uuid —

`folder_id`: Uuid —

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

`after`: typing.Optional\[RequestAfterOpaqueCursor]

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

제공된 folder\_id 경로 매개변수 내에 새 폴더를 생성합니다.

속도 제한: account\_user당 1초당 3회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.folders import FolderCreateParamsData

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

```

**매개변수**

`account_id`: Uuid —

`folder_id`: Uuid —

`data`: FolderCreateParamsData

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

폴더를 다른 폴더로 이동합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.folders import FolderMoveParamsData

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

```

**매개변수**

`account_id`: Uuid —

`folder_id`: Uuid —

`data`: FolderMoveParamsData

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

#### 그룹

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

계정의 그룹을 나열합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

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

`sort`: `typing.Optional[GroupsIndexRequestSort]` — 쿼리 매개변수`after`로 그룹 정렬: `typing.Optional[RequestAfterOpaqueCursor]`

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

그룹 세부 정보 표시.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`group_id`: `Uuid` —

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

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

현재 계정의 그룹을 생성합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.groups import CreateGroupParamsData

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

**매개변수**

`account_id`: `Uuid` —

`data`: `CreateGroupParamsData`

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

그룹 세부 정보를 업데이트합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.groups import UpdateGroupParamsData

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

**매개변수**

`account_id`: `Uuid` —

`group_id`: `Uuid` —

`data`: `UpdateGroupParamsData`

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

#### 메타데이터

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

여러 파일에 걸쳐 메타데이터 값을 업데이트합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

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

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

**매개변수**

`account_id`: `Uuid` —

`project_id`: `Uuid` —

`data`: `BulkUpdateMetadataParamsData`

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

파일의 메타데이터를 표시합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`file_id`: `Uuid` —

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

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

#### 메타데이터 필드

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

계정 수준의 사용자 지정 필드 정의를 삭제합니다.

요청 제한: account\_user당 1.00분당 60회 호출

**`usage`**

```python usage

from frameio import Frameio

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

```

**매개변수**

`account_id`: Uuid —

`field_definition_id`: Uuid —

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

계정 수준의 사용자 지정 필드 정의를 업데이트합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

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

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

```

**매개변수**

`account_id`: Uuid —

`field_definition_id`: Uuid —

`data`: typing.Optional\[UpdateFieldDefinitionParamsData]

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

계정 수준의 필드 정의를 나열합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

```

**매개변수**

`account_id`: Uuid —

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

`after`: typing.Optional\[RequestAfterOpaqueCursor]

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

계정 수준의 필드 정의를 생성합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

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

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

```

**매개변수**

`account_id`: Uuid —

`data`: typing.Optional\[CreateFieldDefinitionParamsData]

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

#### 프로젝트 권한

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

지정된 프로젝트에 대한 사용자 역할을 나열합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

```

**매개변수**

`account_id`: Uuid —

`project_id`: Uuid —

`include_deactivated`: typing.Optional\[bool] — 비활성화된 사용자를 응답에 포함하도록 지원합니다. 기본값은 false입니다.

`after`: typing.Optional\[RequestAfterOpaqueCursor]

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 참고: 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

지정된 프로젝트에서 사용자를 제거합니다.

요청 제한: account\_user당 1.00분당 60회 호출

**`usage`**

```python usage

from frameio import Frameio

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

```

**매개변수**

`account_id`: Uuid —

`project_id`: Uuid —

`user_id`: Uuid —

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

사용자가 이미 프로젝트에 추가된 경우 지정된 프로젝트에 대한 사용자 역할을 업데이트합니다. 사용자가 프로젝트에 추가되지 않은 경우 해당 사용자는 지정된 역할로 추가됩니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio, UpdateUserRolesParamsData

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

```

**매개변수**

`account_id`: Uuid —

`project_id`: Uuid —

`user_id`: Uuid —

`data`: UpdateUserRolesParamsData

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

#### 프로젝트

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

프로젝트 세부 정보를 표시합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`project_id`: `Uuid` —

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

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

프로젝트를 삭제합니다.

요청 제한: account\_user당 1.00분당 60회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`project_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

프로젝트 세부 정보를 업데이트합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.projects import ProjectUpdateParamsData

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

**매개변수**

`account_id`: `Uuid` —

`project_id`: `Uuid` —

`data`: `ProjectUpdateParamsData`

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

지정된 작업 영역의 프로젝트를 나열합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`workspace_id`: `Uuid` —

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

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

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

지정된 작업 영역에 프로젝트를 생성합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.projects import ProjectParamsData

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

**매개변수**

`account_id`: `Uuid` —

`workspace_id`: `Uuid` —

`data`: `ProjectParamsData`

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

인증된 사용자가 지정된 계정 내에서 액세스할 수 있는 모든 프로젝트 나열.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

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

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

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

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

지정된 계정 내에서 현재 사용자가 초대되었지만 작업 영역 레벨 액세스 권한은 없는 프로젝트를 나열합니다. 사용자가 팀/작업 영역 권한 없이 프로젝트별 공동 작업자 액세스 권한을 갖는 프로젝트입니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

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

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

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

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

#### 검색

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

계정 내의 에셋, 폴더, 프로젝트를 검색합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.search import SearchParamsFilters

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

**매개변수**

`account_id`: `Uuid` —

`engine`: `SearchParamsEngine` — 사용할 검색 엔진입니다. 사용 가능한 엔진: lexical, nlp. `쿼리`: `str` — 검색 쿼리 텍스트

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

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`filters`: `typing.Optional[SearchParamsFilters]` — 반환되는 결과 유형을 제어하는 필터

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

#### 공유

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

단일 공유를 표시합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage
from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`share_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

공유를 삭제합니다.

요청 제한: account\_user당 1.00분당 60회 호출

**`usage`**

```python usage
from frameio import Frameio

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

```

**매개변수**

`account_id`: `Uuid` —

`share_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

공유를 업데이트합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

import datetime

from frameio import Frameio
from frameio.shares import UpdateShareParamsData

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

**매개변수**

`account_id`: `Uuid` —

`share_id`: `Uuid`—

`data`: `UpdateShareParamsData`

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

공유 검토자를 나열합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`share_id`: `Uuid`—

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

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

다음 세 가지 식별자 유형을 사용하여 보안 공유에 검토자를 추가합니다. `adobe_user_id`, `email`, `user_id`.

요청에는 식별자 유형 매개변수가 하나만 포함될 수 있습니다.

`email`은 공유가 속한 계정에 Frame 계정 멤버가 없는 경우에도 해당 공유에 검토자를 추가할 수 있는 유일한 식별자입니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

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

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

**매개변수**

`account_id`: `Uuid` —

`share_id`: `Uuid`—

`data`: `AddReviewersToShareParamsData`

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

다음 세 가지 식별자 유형을 사용하여 보안 공유에서 검토자를 제거합니다. `adobe_user_id`, `email`, `user_id`.

요청에는 식별자 유형 매개변수가 하나만 포함될 수 있습니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

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

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

**매개변수**

`account_id`: `Uuid` —

`share_id`: `Uuid`—

`data`: `RemoveReviewerParamsData`

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

현재 공유 내에 있는 에셋을 해당 공유에서 제거합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`share_id`: `Uuid`—

`asset_id`: `Uuid`—

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

새로운 에셋을 공유에 추가합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.shares import AddAssetParamsData

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

**매개변수**

`account_id`: `Uuid` —

`share_id`: `Uuid`—

`data`: `AddAssetParamsData`

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

프로젝트의 공유를 나열합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`project_id`: `Uuid`—

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

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

공유를 생성합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage
import datetime

from frameio import Frameio
from frameio.shares import CreateShareParamsData_Asset

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

**매개변수**

`account_id`: `Uuid` —

`project_id`: `Uuid`—

`data`: `CreateShareParamsData`

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

#### 업로드

#### frameio.upload.FrameioUploader(에셋, 파일, …)

`client.files.create_local_upload(…)`가 반환한 사전 서명된 URL을 사용하여 로컬 파일을 Frame.io에 업로드합니다. `FrameioUploader`는 `FileWithUploadUrls` 응답에서 `upload_urls`, `file_size`, `media_type`을 읽고 청크 분할된 다중 스레드 S3 업로드를 수행하는 얇은 래퍼입니다.

**`usage`**

```python usage

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

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

**매개변수**

`asset`: `FileWithUploadUrls` — `client.files.create_local_upload(…)`에서 반환된 `FileWithUploadUrls` 인스턴스입니다.

`file`: `typing.BinaryIO` — 바이너리 읽기 모드(`"rb"`)로 열린 파일과 같은 오브젝트입니다.

`max_workers`: `int` — 기본 업로더에 패스스루되는 스레드 풀 동시성입니다. 기본값은 5입니다.

`headers`: `typing.Optional[typing.Dict[str, str]]` — 모든 S3 PUT 요청에 병합되는 추가 헤더입니다. Frame.io에서 요구하는 `{"x-amz-acl": "private"}`가 기본값입니다.

`max_retries`: `int` — 청크당 재시도 횟수입니다. 기본값은 3입니다.

`on_progress`: `typing.Optional[typing.Callable[[int, int], None]]` — 각 청크 후에 `(bytes_uploaded_so_far, total_bytes)`와 함께 호출되는 선택적 콜백입니다. **메서드** `upload() -&gt; None` — 파일을 업로드합니다. 완료될 때까지 차단되거나 오류 시 예외를 발생시킵니다.

#### 사용자

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

베어러 토큰과 연결된 사용자의 세부 정보를 확인합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

#### 버전 스택

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

지정된 버전 스택의 하위 항목(파일)들을 나열합니다.

응답에 추가 속성을 선택적으로 포함하려면 include 쿼리 매개변수를 사용하세요.

> **Note**
>
> `media_links.original`을 포함했는데 사용자에게 해당 프로젝트에서 파일을 다운로드할 권한이 없는 경우, 이 엔드포인트는 `403 Forbidden` 오류로 응답합니다. 이 사용자에 대해 워터마크가 요구되지만 요청된 media\_links에서 이를 지원하지 않아 콘텐츠에 액세스할 수 없는 경우, 요청은 성공하지만 지원되지 않는 미디어 링크는 null로 설정됩니다. 마찬가지로 특정 파일에 대해 요청된 트랜스코드 링크가 존재하지 않거나(예: 정적 이미지 파일에 `media_links.video_h264_180` 포함) 트랜스코딩 프로세스가 완료되지 않은 경우(즉, 파일의 상태가 "transcoded"가 아닌 "uploaded"인 경우), 응답 페이로드의 미디어 링크 역시 null로 설정됩니다. 즉, 클라이언트는 null로 처리된 미디어 링크를 원활하게 처리할 수 있어야 합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

```

**매개변수**

`account_id`: Uuid —

`version_stack_id`: Uuid —

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

`after`: typing.Optional\[RequestAfterOpaqueCursor]

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

버전 스택의 세부 정보를 표시합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

```

**매개변수**

`account_id`: Uuid —

`version_stack_id`: Uuid —

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

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

버전 스택을 복사합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.version_stacks import VersionStackCopyParamsData

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

```

**매개변수**

`account_id`: Uuid —

`version_stack_id`: Uuid —

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

`data`: typing.Optional\[VersionStackCopyParamsData]

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

지정된 폴더의 버전 스택을 나열합니다.

속도 제한: account\_user당 1초당 5회 호출

**`usage`**

```python usage

from frameio import Frameio

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

```

**매개변수**

`account_id`: Uuid —

`folder_id`: Uuid —

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

`after`: typing.Optional\[RequestAfterOpaqueCursor]

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

상위 폴더 아래에 새 버전 스택을 생성합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.version_stacks import VersionStackCreateParamsData

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

```

**매개변수**

`account_id`: Uuid —

`folder_id`: Uuid —

`data`: VersionStackCreateParamsData

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

버전 스택을 다른 폴더로 이동합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.version_stacks import VersionStackMoveParamsData

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

```

**매개변수**

`account_id`: Uuid —

`version_stack_id`: Uuid —

`data`: VersionStackMoveParamsData

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

#### Webhook

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

지정된 작업 영역의 웹훅을 나열합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: Uuid —

`workspace_id`: Uuid —

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

`after`: typing.Optional\[RequestAfterOpaqueCursor]

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

시크릿이 포함된 단일 웹훅을 생성합니다.

유효한 이벤트:

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

요청 제한: 계정당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.webhooks import WebhookCreateParamsData

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

```

**매개변수**

`account_id`: Uuid —

`workspace_id`: Uuid —

`data`: WebhookCreateParamsData

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

웹훅 세부 정보를 표시합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: Uuid —

`webhook_id`: Uuid —

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

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

웹훅을 삭제합니다.

요청 제한: account\_user당 1.00분당 60회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: Uuid —

`webhook_id`: Uuid —

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

웹훅 세부 정보를 업데이트합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio
from frameio.webhooks import WebhookUpdateParamsData

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

**매개변수**

`account_id`: Uuid —

`webhook_id`: Uuid —

`data`: WebhookUpdateParamsData

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

#### 작업 공간 권한

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

지정된 작업 영역의 사용자 역할을 나열합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage
from frameio import Frameio

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

**매개변수**

`account_id`: `Uuid` —

`workspace_id`: `Uuid` —

`includ_deactivated`: `typing.Optional[bool]` — 비활성화된 사용자를 응답에 포함하도록 지원합니다. 기본값은 false입니다.

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

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

지정된 작업 영역에서 사용자를 제거합니다.

요청 제한: account\_user당 1.00분당 60회 호출

**`usage`**

```python usage
from frameio import Frameio

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

```

**매개변수**

`account_id`: `Uuid` —

`workspace_id`: `Uuid` —

`user_id`: `Uuid` —

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

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

사용자가 이미 작업 영역에 추가된 경우 지정된 작업 영역에 대한 사용자 역할을 업데이트합니다. 사용자가 작업 영역에 추가되지 않은 경우 해당 사용자는 지정된 역할로 추가됩니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio, UpdateUserRolesParamsData

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

**매개변수**

`account_id`: `Uuid` —

`workspace_id`: `Uuid`—

`user_id`: `Uuid` —

`data`: `UpdateUserRolesParamsData`

`request_options`: `typing.Optional[RequestOptions]` — 요청별 구성입니다.

#### Workspaces

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

작업 영역 세부 정보를 표시합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage

from frameio import Frameio

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

**매개변수**

`account_id`: Uuid —

`workspace_id`: Uuid —

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

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

계정에서 작업 영역을 삭제합니다.

요청 제한: account\_user당 1.00분당 60회 호출

**`usage`**

```python usage
from frameio import Frameio

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

```

**매개변수**

`account_id`: Uuid —

`workspace_id`: Uuid —

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

작업 영역을 업데이트합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage

from frameio import Frameio, WorkspaceParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.workspaces.update(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    workspace_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=WorkspaceParamsData(
        name="My Workspace",
    ),
)
```

**매개변수**

`account_id`: Uuid —

`workspace_id`: Uuid —

`data`: WorkspaceParamsData

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

지정된 계정의 작업 영역을 나열합니다.

요청 제한: account\_user당 1.00분당 100회 호출

**`usage`**

```python usage
from frameio import Frameio

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

**매개변수**

`account_id`: Uuid —

`workspace_id`: Uuid —

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

after: typing.Optional\[RequestAfterOpaqueCursor]

페이지가 매겨진 결과를 반환하는 요청에 사용되는 불투명한 커서 쿼리 매개변수입니다.

> **Tip**
>
> 이 값은 자동으로 생성되며 이전 응답에서 링크의 일부로 포함됩니다. 사람이 읽을 수 있는 형태로 설계되지 않았습니다.

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

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

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

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

계정에서 작업 영역을 생성합니다.

요청 제한: account\_user당 1.00분당 10회 호출

**`usage`**

```python usage
from frameio import Frameio, WorkspaceParamsData

client = Frameio(
    token="YOUR_TOKEN",
)
client.workspaces.create(
    account_id="b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    data=WorkspaceParamsData(
        name="My Workspace",
    ),
)
```

**매개변수**

`account_id`: Uuid —

`data`: WorkspaceParamsData

`request_options`: typing.Optional\[RequestOptions] — 요청별 구성입니다.

---

### PyPI

> **Launch**
>
> [PyPI](https://pypi.org/project/frameio/)에서 보기

---