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

# TypeScript SDK 참조

---

### 설치

```curl
npm i -s frameio
```

---

### 사용량

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

```ts
import { FrameioClient } from "frameio";

const client = new FrameioClient({ token: "YOUR_TOKEN" });
await client.metadataFields.metadataFieldDefinitionsCreate("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        field_type: "select",
        field_configuration: {
            enable_add_new: false,
            options: [
                {
                    display_name: "Option 1",
                },
                {
                    display_name: "Option 2",
                },
            ],
        },
        name: "Fields definition name",
    },
});
```

---

### 요청 및 응답 유형

SDK는 모든 요청 및 응답 유형을 TypeScript 인터페이스로 내보냅니다. 다음 네임스페이스를 사용하여 가져오기만 하면 됩니다.

```ts
import { Frameio } from "frameio";

const request: Frameio.UpdateFieldDefinitionParams = {
    ...
};
```

---

### 예외 처리

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

```ts
import { FrameioError } from "frameio";

try {
    await client.metadataFields.metadataFieldDefinitionsCreate(...);
} catch (err) {
    if (err instanceof FrameioError) {
        console.log(err.statusCode);
        console.log(err.message);
        console.log(err.body);
        console.log(err.rawResponse);
    }
}
```

---

### 고급

#### 추가 헤더

요청의 일부로 추가 헤더를 전송하려면 headers 요청 옵션을 사용하세요.

```ts
const response = await client.metadataFields.metadataFieldDefinitionsCreate(..., {
    headers: {
        'X-Custom-Header': 'custom value'
    }
});
```

#### 추가 쿼리 문자열 매개변수

요청의 일부로 추가 쿼리 문자열 매개변수를 전송하려면 queryParams 요청 옵션을 사용하세요.

```ts
const response = await client.metadataFields.metadataFieldDefinitionsCreate(..., {
    queryParams: {
        'customQueryParamKey': 'custom query param value'
    }
});
```

---

#### 재시도

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

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

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

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

```ts
const response = await client.metadataFields.metadataFieldDefinitionsCreate(..., {
    maxRetries: 0 // override maxRetries at the request level
});
```

---

#### 시간 초과

SDK는 기본적으로 60초의 시간 초과 값을 사용합니다. 이 동작을 구성하려면 timeoutInSeconds 옵션을 사용하세요.

```ts
const response = await client.metadataFields.metadataFieldDefinitionsCreate(..., {
    timeoutInSeconds: 30 // override timeout to 30s
});
```

#### 요청 중단

SDK를 사용하면 중단 신호를 전달하여 언제든지 요청을 중단할 수 있습니다.

```ts
const controller = new AbortController();
const response = await client.metadataFields.metadataFieldDefinitionsCreate(..., {
    abortSignal: controller.signal
});
controller.abort(); // aborts the request
```

---

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

SDK는 `.withRawResponse()` 메서드를 통해 헤더를 포함한 원시 응답 데이터에 대한 액세스를 제공합니다. `.withRawResponse()` 메서드는 `data` 및 `rawResponse` 속성을 가진 오브젝트를 결과로 제공하는 프로미스를 반환합니다.

```ts
const { data, rawResponse } = await client.metadataFields.metadataFieldDefinitionsCreate(...).withRawResponse();

console.log(data);
console.log(rawResponse.headers['X-My-Header']);
```

#### 런타임 호환성

SDK는 다음 런타임에서 작동합니다.

* Node.js 18+
* Vercel
* Cloudflare Workers
* Deno v1.25+
* Bun 1.0+
* React Native

---

#### 가져오기 클라이언트 사용자 지정

SDK는 기본 HTTP 클라이언트 및 Fetch 기능을 사용자 지정할 수 있는 방법을 제공합니다. 지원되지 않는 환경에서 실행 중인 경우, 이를 통해 제약을 극복하고 SDK가 정상적으로 작동하도록 보장할 수 있습니다.

```ts
import { FrameioClient } from "frameio";

const client = new FrameioClient({
    ...
    fetcher: // provide your implementation here
});
```

---

### 참조

#### 계정 권한

#### client.accountPermissions.index(accountId, \{ ...params }) -> core.Page\<Frameio.AccountUserRole>

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

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

**`usage`**

```ts usage

const response = await client.accountPermissions.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include_deactivated: true,
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
for await (const item of response) {
    console.log(item);
}

// Or you can manually iterate page-by-page
let page = await client.accountPermissions.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include_deactivated: true,
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
while (page.hasNextPage()) {
    page = page.getNextPage();
}

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`request`: `Frameio.AccountPermissionsIndexRequest`

`requestOptions`: `AccountPermissions.RequestOptions`

#### 계정

#### client.accounts.index(\{ ...params }) -> core.Page\<Frameio.Account>

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

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

**`usage`**

```ts usage
const response = await client.accounts.index({
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
for await (const item of response) {
    console.log(item);
}

// Or you can manually iterate page-by-page
let page = await client.accounts.index({
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
while (page.hasNextPage()) {
    page = page.getNextPage();
}

```

**매개변수**

`request`: `Frameio.AccountsIndexRequest`

`requestOptions`: `Accounts.RequestOptions`

#### client.accounts.auditlogIndex(accountId, \{ ...params }) -> Frameio.AuditLogsWithIncludesResponse

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

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

**`usage`**

```ts usage
await client.accounts.auditlogIndex("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "user",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
```

**매개변수**

`accountId`: `Frameio.FrameOrAdobeId` —

`request`: `Frameio.AuditlogIndexRequest`

`requestOptions`: `Accounts.RequestOptions`

#### 인증

#### new ServerToServerAuth(\{ clientId, clientSecret, … })

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

**`usage`**

```ts usage
import { FrameioClient, ServerToServerAuth } from "frameio";

const auth = new ServerToServerAuth({
    clientId: "YOUR_CLIENT_ID",
    clientSecret: "YOUR_CLIENT_SECRET",
});
const client = new FrameioClient({ token: () => auth.getToken() });
```

**매개변수**

`clientId`: `string` — Adobe IMS OAuth client ID.

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

`scopes`: `string` — 공백으로 구분된 권한 목록입니다(OAuth 2.0 RFC 6749). 기본적으로 서버 간 범위가 사용됩니다.

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

`fetch`: `typeof fetch` — 사용자 지정 가져오기 구현(프록시, TLS 등)입니다.

`onTokenRefreshed`: `OnTokenRefreshed` — 모든 토큰 가져오기 후 실행되는 선택적 콜백입니다.

`timeout`: `number` — HTTP 요청 시간 초과(밀리초 단위)입니다. 기본값은 30000입니다.

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

`refreshBuffer`: `number` — 사전 새로 고침을 트리거하기 위한 만료 전 초 단위 시간입니다. 기본값은 60입니다.

`logger`: `Logger` — 진단 출력용 로거 인스턴스입니다. **Methods** `getToken(): Promise<string>` — 필요한 경우 새로 고침을 수행하며 유효한 액세스 토큰을 반환합니다. 클라이언트에 전달하세요. `new FrameioClient({ token: () => auth.getToken() })`. `authenticate(): Promise<TokenResponse>` — 새 액세스 토큰을 명시적으로 가져옵니다. `revoke(): Promise<void>` — 서버 측에서 두 토큰 모두를 취소하고 로컬 상태를 지웁니다. `exportTokens(): ExportedTokens` — 지속성을 위해 현재 토큰 상태를 내보냅니다. `importTokens(data: ExportedTokens): void` — 이전에 내보낸 오브젝트에서 토큰 상태를 복원합니다.

#### new WebAppAuth(\{ clientId, clientSecret, redirectUri, … })

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

**`usage`**

```ts usage
import { randomBytes } from "crypto";
import { FrameioClient, WebAppAuth } from "frameio";

const auth = new WebAppAuth({
    clientId: "YOUR_CLIENT_ID",
    clientSecret: "YOUR_CLIENT_SECRET",
    redirectUri: "https://myapp.com/callback",
});
const url = auth.getAuthorizationUrl({ state: randomBytes(24).toString("hex") });
// redirect the user to url ...
await auth.exchangeCode("CODE_FROM_CALLBACK");
const client = new FrameioClient({ token: () => auth.getToken() });
```

**매개변수**

`clientId`: `string` — Adobe IMS OAuth client ID.

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

`redirectUri`: `string` — 등록된 리디렉션 URI입니다.

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

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

`fetch`: `typeof fetch` — 사용자 지정 가져오기 구현(프록시, TLS 등)입니다.

`onTokenRefreshed`: `OnTokenRefreshed` — 모든 토큰 새로 고침 후 실행되는 선택적 콜백입니다.

`timeout`: `number` — HTTP 요청 시간 초과(밀리초 단위)입니다. 기본값은 30000입니다.

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

`refreshBuffer`: `number` — 사전 새로 고침을 트리거하기 위한 만료 전 초 단위 시간입니다. 기본값은 60입니다.

`logger`: `Logger` — 진단 출력용 로거 인스턴스입니다. **Methods** `getToken(): Promise<string>` — 필요한 경우 새로 고침을 수행하며 유효한 액세스 토큰을 반환합니다. `getAuthorizationUrl({ state }): string` — Adobe IMS 인증 URL을 빌드합니다. 반환될 불투명한 CSRF/상태 값을 전달합니다. `exchangeCode(code: string): Promise<TokenResponse>` — 토큰을 액세스하고 새로 고치기 위해 인증 코드를 교환합니다. `refresh(): Promise<TokenResponse>` — 토큰 새로 고침을 수동으로 트리거합니다. `revoke(): Promise<void>` — 서버 측에서 두 토큰 모두를 취소하고 로컬 상태를 지웁니다. `exportTokens(): ExportedTokens` — 지속성을 위해 현재 토큰 상태를 내보냅니다. `importTokens(data: ExportedTokens): void` — 이전에 내보낸 오브젝트에서 토큰 상태를 복원합니다.

#### new SPAAuth(\{ clientId, redirectUri, … })

`authorization_code` + PKCE(클라이언트 시크릿 없음)를 사용하여 인증합니다. 클라이언트 시크릿을 안전하게 저장할 수 없는 브라우저 기반 단일 페이지에 이 방식을 사용하세요.

**`usage`**

```ts usage
import { randomBytes } from "crypto";
import { FrameioClient, SPAAuth } from "frameio";

const auth = new SPAAuth({
    clientId: "YOUR_CLIENT_ID",
    redirectUri: "https://myapp.com/cb",
});
const result = await auth.getAuthorizationUrl({ state: randomBytes(24).toString("hex") });
// redirect the user to result.url, store result.codeVerifier ...
await auth.exchangeCode({ code: "CODE_FROM_CALLBACK", codeVerifier: result.codeVerifier });
const client = new FrameioClient({ token: () => auth.getToken() });
```

**매개변수**

`clientId`: `string` — Adobe IMS OAuth client ID.

`redirectUri`: `string` — 등록된 리디렉션 URI입니다.

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

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

`fetch`: `typeof fetch` — 사용자 지정 가져오기 구현(프록시, TLS 등)입니다.

`onTokenRefreshed`: `OnTokenRefreshed` — 모든 토큰 새로 고침 후 실행되는 선택적 콜백입니다.

`timeout`: `number` — HTTP 요청 시간 초과(밀리초 단위)입니다. 기본값은 30000입니다.

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

`refreshBuffer`: `number` — 사전 새로 고침을 트리거하기 위한 만료 전 초 단위 시간입니다. 기본값은 60입니다.

`logger`: `Logger` — 진단 출력용 로거 인스턴스입니다. **Methods** `getToken(): Promise<string>` — 필요한 경우 새로 고침을 수행하며 유효한 액세스 토큰을 반환합니다. `getAuthorizationUrl({ state }): Promise<AuthorizationUrlResult>` — PKCE 챌린지를 사용하여 Adobe IMS 인증 URL을 구축합니다. `url` 및 `codeVerifier` 속성을 포함하는 `AuthorizationUrlResult`를 반환합니다. `exchangeCode({ code, codeVerifier }): Promise<TokenResponse>` — 인증 코드 + PKCE 검증자를 토큰으로 교환합니다. `refresh(): Promise<TokenResponse>` — 토큰 새로 고침을 수동으로 트리거합니다. `revoke(): Promise<void>` — 서버 측에서 두 토큰 모두를 취소하고 로컬 상태를 지웁니다. `exportTokens(): ExportedTokens` — 지속성을 위해 현재 토큰 상태를 내보냅니다. `importTokens(data: ExportedTokens): void` — 이전에 내보낸 오브젝트에서 토큰 상태를 복원합니다.

#### new NativeAppAuth(\{ clientId, redirectUri, … })

데스크탑 및 모바일 애플리케이션용 `authorization_code` + PKCE를 사용하여 인증합니다. `SPAAuth`와 동일한 API를 공유합니다. custom-scheme 리디렉션 URI(예: `myapp://callback`)를 사용합니다.

**`usage`**

```ts usage
import { randomBytes } from "crypto";
import { FrameioClient, NativeAppAuth } from "frameio";

const auth = new NativeAppAuth({
    clientId: "YOUR_CLIENT_ID",
    redirectUri: "myapp://callback",
});
const result = await auth.getAuthorizationUrl({ state: randomBytes(24).toString("hex") });
// open result.url in the system browser, store result.codeVerifier ...
await auth.exchangeCode({ code: "CODE_FROM_CALLBACK", codeVerifier: result.codeVerifier });
const client = new FrameioClient({ token: () => auth.getToken() });
```

**매개변수**

`clientId`: `string` — Adobe IMS OAuth client ID.

`redirectUri`: `string` — 등록된 리디렉션 URI입니다(사용자 지정 스키마 지원).

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

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

`fetch`: `typeof fetch` — 사용자 지정 가져오기 구현(프록시, TLS 등)입니다.

`onTokenRefreshed`: `OnTokenRefreshed` — 모든 토큰 새로 고침 후 실행되는 선택적 콜백입니다.

`timeout`: `number` — HTTP 요청 시간 초과(밀리초 단위)입니다. 기본값은 30000입니다.

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

`refreshBuffer`: `number` — 사전 새로 고침을 트리거하기 위한 만료 전 초 단위 시간입니다. 기본값은 60입니다.

`logger`: `Logger` — 진단 출력용 로거 인스턴스입니다. **Methods** `SPAAuth`와 동일: `getToken()`, `getAuthorizationUrl({ state })`, `exchangeCode({ code, codeVerifier })`, `refresh()`, `revoke()`, `exportTokens()`, `importTokens(data)`.

#### AuthorizationUrlResult

`SPAAuth.getAuthorizationUrl()` 및 `NativeAppAuth.getAuthorizationUrl()`에서 반환되는 오브젝트입니다. 인증 URL 및 PKCE 코드 검증자를 보관합니다.

**속성**

`url`: `string` — 사용자를 리디렉션할 전체 인증 URL입니다.

`codeVerifier`: `string` — 저장해 두었다가 `exchangeCode()`에 전달할 PKCE 코드 검증자입니다.

#### 인증 예외

모든 인증 오류는 `FrameioAuthError`를 확장하며 `frameio`에서 가져올 수 있습니다.

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

#### 컬렉션

#### client.collections.index(accountId, projectId, \{ ...params }) -> Frameio.CollectionsResponse

프로젝트의 컬렉션 나열.

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

**`usage`**

```ts usage
await client.collections.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator,project",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`projectId`: `Frameio.Uuid` —

`request`: `Frameio.CollectionsIndexRequest`

`requestOptions`: `Collections.RequestOptions`

#### client.collections.show(accountId, collectionId, \{ ...params }) -> Frameio.CollectionResponse

컬렉션 세부 정보 표시.

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

**`usage`**

```ts usage
await client.collections.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator,project",
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`collectionId`: `Frameio.Uuid` —

`request`: `Frameio.CollectionsShowRequest`

`requestOptions`: `Collections.RequestOptions`

#### 코멘트

#### client.comments.show(accountId, commentId, \{ ...params }) -> Frameio.CommentWithIncludesResponse

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

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

**`usage`**

```ts usage
await client.comments.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "owner",
});

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`commentId`: `Frameio.Uuid` —

`request`: `Frameio.CommentsShowRequest`

`requestOptions`: `Comments.RequestOptions`

#### client.comments.delete(accountId, commentId) -> void

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

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

**`usage`**

```ts usage
await client.comments.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`commentId`: `Frameio.Uuid` —

`requestOptions`: `Comments.RequestOptions`

#### client.comments.update(accountId, commentId, \{ ...params }) -> Frameio.CommentResponse

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

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

**`usage`**

```ts usage
await client.comments.update("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    timestamp_as_timecode: true,
    data: {
        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!",
    },
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`commentId`: `Frameio.Uuid` —

`request`: `Frameio.UpdateCommentParams`

`requestOptions`: `Comments.RequestOptions`

#### client.comments.index(accountId, fileId, \{ ...params }) -> core.Page\<Frameio.CommentWithIncludes>

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

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

**`usage`**

```ts usage
const response = await client.comments.index(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        include: "owner",
        after: "<opaque_cursor>",
        page_size: 10,
        include_total_count: false,
    },
);
for await (const item of response) {
    console.log(item);
}

// Or you can manually iterate page-by-page
let page = await client.comments.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "owner",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
while (page.hasNextPage()) {
    page = page.getNextPage();
}
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`fileId`: `Frameio.Uuid` —

`request`: `Frameio.CommentsIndexRequest`

`requestOptions`: `Comments.RequestOptions`

#### client.comments.create(accountId, fileId, \{ ...params }) -> Frameio.CommentResponse

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

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

**`usage`**

```ts usage
await client.comments.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    timestamp_as_timecode: true,
    data: {
        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",
    },
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`fileId`: `Frameio.Uuid` —

`request`: `Frameio.CreateCommentParams`

`requestOptions`: `Comments.RequestOptions`

#### client.comments.createAttachment(accountId, commentId, \{ ...params }) -> Frameio.CommentAttachmentResponse

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

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

**`usage`**

```ts usage
await client.comments.createAttachment("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        file_size: 1024000,
        media_type: "image/png",
        name: "screenshot.png",
    },
});
```

**매개변수**

`accountId`: `Frameio.FrameOrAdobeId` —

`commentId`: `Frameio.Uuid` —

`request`: `Frameio.CreateAttachmentParams`

`requestOptions`: `Comments.RequestOptions`

#### client.comments.deleteAttachment(accountId, commentId, attachmentId) -> void

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

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

**`usage`**

```ts usage
await client.comments.deleteAttachment("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");
```

**매개변수**

`accountId`: `Frameio.FrameOrAdobeId` —

`commentId`: `Frameio.Uuid` —

`attachmentId`: `Frameio.Uuid` —

`requestOptions`: `Comments.RequestOptions`

#### 사용자 지정 작업

#### client.customActions.actionsIndex(accountId, workspaceId, \{ ...params }) -> Frameio.ActionsWithIncludesResponse

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

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

**`usage`**

```ts usage
await client.customActions.actionsIndex("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
```

**매개변수**

`accountId`: `Frameio.FrameOrAdobeId` —

`workspaceId`: `Frameio.Uuid` —

`request`: `Frameio.ActionsIndexRequest`

`requestOptions`: `CustomActions.RequestOptions`

#### client.customActions.actionsShow(accountId, actionId, \{ ...params }) -> Frameio.ActionWithIncludesResponse

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

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

**`usage`**

```ts usage
await client.customActions.actionsShow("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
});
```

**매개변수**

`accountId`: `Frameio.FrameOrAdobeId` —

`actionId`: `Frameio.Uuid` —

`request`: `Frameio.ActionsShowRequest`

`requestOptions`: `CustomActions.RequestOptions`

#### client.customActions.actionsCreate(accountId, workspaceId, \{ ...params }) -> Frameio.ActionCreateResponse

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

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

**`usage`**

```ts usage
await client.customActions.actionsCreate("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        description: "customizing our workflow",
        event: "my.event",
        name: "First Custom Action",
        timeout: 7,
        url: "https://example.com/custom-action",
    },
});
```

**매개변수**

`accountId`: `Frameio.FrameOrAdobeId` —

`workspaceId`: `Frameio.Uuid` —

`request`: `Frameio.ActionCreateParams`

`requestOptions`: `CustomActions.RequestOptions`

#### client.customActions.actionsUpdate(accountId, actionId, \{ ...params }) -> Frameio.ActionResponse

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

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

**`usage`**

```ts usage
await client.customActions.actionsUpdate("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        active: true,
        description: "customizing our workflow",
        event: "my.event",
        multi_asset: true,
        name: "First Custom Action",
        timeout: 7,
        url: "https://example.com/custom-action",
    },
});
```

**매개변수**

`accountId`: `Frameio.FrameOrAdobeId` —

`actionId`: `Frameio.Uuid` —

`request`: `Frameio.ActionUpdateParams`

`requestOptions`: `CustomActions.RequestOptions`

#### client.customActions.actionsDelete(accountId, actionId) -> void

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

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

**`usage`**

```ts usage
await client.customActions.actionsDelete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");
```

**매개변수**

`accountId`: `Frameio.FrameOrAdobeId` —

`actionId`: `Frameio.Uuid` —

`requestOptions`: `CustomActions.RequestOptions`

#### 파일

#### client.files.list(accountId, folderId, \{ ...params }) -> Frameio.AssetsWithIncludesResponse

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

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

**`usage`**

```ts usage
await client.files.list("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "media_links",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FilesListRequest`

`requestOptions`: `Files.RequestOptions`

#### client.files.create(accountId, folderId, \{ ...params }) -> Frameio.FileWithUploadUrlsResponse

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

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

**`usage`**

```ts usage
await client.files.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        file_size: 1137444,
        media_type: "image/png",
        name: "asset.png",
    },
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FileCreateParams`

`requestOptions`: `Files.RequestOptions`

#### client.files.show(accountId, fileId, \{ ...params }) -> Frameio.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`**

```ts usage
await client.files.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "media_links",
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FilesShowRequest`

`requestOptions`: `Files.RequestOptions`

#### client.files.delete(accountId, fileId) -> void

ID로 파일을 삭제합니다.

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

**`usage`**

```ts usage
await client.files.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`fileId`: `Frameio.Uuid` —

`requestOptions`: `Files.RequestOptions`

#### client.files.update(accountId, fileId, \{ ...params }) -> Frameio.FileResponse

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

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

**`usage`**

```ts usage
await client.files.update("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        name: "asset.png",
    },
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`fileId`: `Frameio.Uuid` —

`request`: `Frameio.FileUpdateParams`

`requestOptions`: `Files.RequestOptions`

#### client.files.copy(accountId, fileId, \{ ...params }) -> Frameio.FileCopyResponse

파일을 복사합니다.

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

**`usage`**

```ts usage
await client.files.copy("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    copy_metadata: true,
    copy_comments: "none",
    data: {
        parent_id: "2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
    },
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`fileId`: `Frameio.Uuid` —

`request`: `Frameio.FileCopyParams`

`requestOptions`: `Files.RequestOptions`

#### client.files.createRemoteUpload(accountId, folderId, \{ ...params }) -> Frameio.FileRemoteUploadResponse

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

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

**`usage`**

```ts usage
await client.files.createRemoteUpload("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        name: "asset.png",
        source_url: "https://upload.wikimedia.org/wikipedia/commons/e/e1/White_Pixel_1x1.png",
    },
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FileCreateRemoteUploadParams`

`requestOptions`: `Files.RequestOptions`

#### client.files.move(accountId, fileId, \{ ...params }) -> Frameio.FileResponse

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

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

**`usage`**

```ts usage
await client.files.move("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        parent_id: "2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
    },
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`fileId`: `Frameio.Uuid` —

`request`: `Frameio.FileMoveParams`

`requestOptions`: `Files.RequestOptions`

#### client.files.createLocalUpload(accountId, folderId, \{ ...params }) -> Frameio.FileWithUploadUrlsResponse

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

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

**`usage`**

```ts usage
await client.files.createLocalUpload("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        file_size: 1137444,
        name: "asset.png",
    },
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FileCreateLocalUploadParams`

`requestOptions`: `Files.RequestOptions`

#### client.files.showFileUploadStatus(accountId, fileId) -> Frameio.FileUploadStatusResponse

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

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

**`usage`**

```ts usage
await client.files.showFileUploadStatus("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`fileId`: `Frameio.Uuid` —

`requestOptions`: `Files.RequestOptions`

#### client.files.importFile(accountId, folderId, \{ ...params }) -> Frameio.FileResponse

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

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

**`usage`**

```ts usage
await client.files.importFile("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        key: "uploads/08091b0f-a541-42f5-a059-5e8c4afecc12/original.png",
        name: "asset.png",
        storage_location: "123e4567-e89b-12d3-a456-426614174000",
    },
});
```

**매개변수**

`accountId`: `Frameio.FrameOrAdobeId` —

`folderId`: `Frameio.FrameOrAdobeId` —

`request`: `Frameio.FileImportParams`

`requestOptions`: `Files.RequestOptions`

#### 폴더 권한

#### client.folderPermissions.folderUserRolesIndex(accountId, folderId, \{ ...params }) -> Frameio.UserRolesResponse

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

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

**`usage`**

```ts usage
await client.folderPermissions.folderUserRolesIndex("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include_deactivated: true,
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FolderUserRolesIndexRequest`

`requestOptions`: `FolderPermissions.RequestOptions`

#### client.folderPermissions.folderUserRolesUpdate(accountId, folderId, userId, \{ ...params }) -> Frameio.UpdateUserRolesResponse

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

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

**`usage`**

```ts usage
await client.folderPermissions.folderUserRolesUpdate("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        role: "editor",
    },
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`userId`: `Frameio.Uuid` —

`request`: `Frameio.UpdateUserRolesParams`

`requestOptions`: `FolderPermissions.RequestOptions`

#### client.folderPermissions.delete(accountId, folderId, userId) -> void

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

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

**`usage`**

```ts usage
await client.folderPermissions.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`userId`: `Frameio.Uuid` —

`requestOptions`: `FolderPermissions.RequestOptions`

#### 폴더

#### client.folders.show(accountId, folderId, \{ ...params }) -> Frameio.FolderWithIncludesResponse

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

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

**`usage`**

```ts usage

await client.folders.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
});

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`projectId`: `Frameio.Uuid` —

`request`: `Frameio.FoldersShowRequest`

`requestOptions`: `Folders.RequestOptions`

#### client.folders.delete(accountId, folderId) -> void

ID로 폴더를 삭제합니다.

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

**`usage`**

```ts usage

await client.folders.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`requestOptions`: `Folders.RequestOptions`

#### client.folders.update(accountId, folderId, \{ ...params }) -> Frameio.FolderResponse

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

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

**`usage`**

```ts usage

await client.folders.update("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        name: "Folder name",
    },
});

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FolderUpdateParams`

`requestOptions`: `Folders.RequestOptions`

#### client.folders.index(accountId, folderId, \{ ...params }) -> Frameio.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`**

```ts usage

await client.folders.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "media_links",
    type: "file,folder,version_stack",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FolderIndexRequest`

`requestOptions`: `Folders.RequestOptions`

#### client.folders.copy(accountId, folderId, \{ ...params }) -> Frameio.FolderCopyResponse

폴더를 복사합니다.

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

**`usage`**

```ts usage

await client.folders.copy("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    copy_metadata: true,
    data: {
        parent_id: "2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
    },
});

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FolderCopyParams`

`requestOptions`: `Folders.RequestOptions`

#### client.folders.list(accountId, folderId, \{ ...params }) -> Frameio.FoldersWithIncludesResponse

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

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

**`usage`**

```ts usage

await client.folders.list("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FoldersListRequest`

`requestOptions`: `Folders.RequestOptions`

#### client.folders.create(accountId, folderId, \{ ...params }) -> Frameio.FolderResponse

지정된 `folder_id` 경로 매개변수 내에 새 폴더를 만듭니다.

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

**`usage`**

```ts usage

await client.folders.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        name: "Folder name",
    },
});

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FolderCreateParams`

`requestOptions`: `Folders.RequestOptions`

#### client.folders.move(accountId, folderId, \{ ...params }) -> Frameio.FolderResponse

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

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

**`usage`**

```ts usage

await client.folders.move("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        parent_id: "2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
    },
});

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.FolderMoveParams`

`requestOptions`: `Folders.RequestOptions`

#### 그룹

#### client.groups.index(accountId, \{ ...params }) -> Frameio.GroupsWithIncludesResponse

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

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

**`usage`**

```ts usage
await client.groups.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
    sort: "creator_asc",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
```

**매개변수**

`accountId`: `Frameio.FrameOrAdobeId` —

`request`: `Frameio.GroupsIndexRequest`

`requestOptions`: `Groups.RequestOptions`

#### client.groups.show(accountId, groupId, \{ ...params }) -> Frameio.GroupWithIncludesResponse

그룹 세부 정보 표시.

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

**`usage`**

```ts usage
await client.groups.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
});
```

**매개변수**

`accountId`: `Frameio.FrameOrAdobeId` —

`groupId`: `Frameio.Uuid` —

`request`: `Frameio.GroupsShowRequest`

`requestOptions`: `Groups.RequestOptions`

#### client.groups.create(accountId, \{ ...params }) -> Frameio.GroupResponse

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

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

**`usage`**

```ts usage
await client.groups.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        emoji: "smile",
        name: "group-1",
    },
});
```

**매개변수**

`accountId`: `Frameio.FrameOrAdobeId` —

`request`: `Frameio.CreateGroupParams`

`requestOptions`: `Groups.RequestOptions`

#### client.groups.update(accountId, groupId, \{ ...params }) -> Frameio.GroupResponse

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

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

**`usage`**

```ts usage
await client.groups.update("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        emoji: "smile",
        name: "group-1",
    },
});
```

**매개변수**

`accountId`: `Frameio.FrameOrAdobeId` —

`groupId`: `Frameio.Uuid` —

`request`: `Frameio.UpdateGroupParams`

`requestOptions`: `Groups.RequestOptions`

#### 메타데이터

#### client.metadata.bulkUpdate(accountId, projectId, \{ ...params }) -> void

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

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

**`usage`**

```ts usage
await client.metadata.bulkUpdate("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        file_ids: ["09b31c2a-04de-464a-a593-643a36ef0d98", "b967fc36-4e18-4b48-a3ab-c790100e2baa"],
        values: [
            {
                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",
                    },
                ],
            },
        ],
    },
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`projectId`: `Frameio.Uuid` —

`request`: `Frameio.BulkUpdateMetadataParams`

`requestOptions`: `Metadata.RequestOptions`

#### client.metadata.show(accountId, fileId, \{ ...params }) -> Frameio.MetadataResponse

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

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

**`usage`**

```ts usage
await client.metadata.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    show_null: true,
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`fileId`: `Frameio.Uuid` —

`request`: `Frameio.MetadataShowRequest`

`requestOptions`: `Metadata.RequestOptions`

#### 메타데이터 필드

#### client.metadataFields.metadataFieldDefinitionsDelete(accountId, fieldDefinitionId) -> void

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

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

**`usage`**

```ts usage

await client.metadataFields.metadataFieldDefinitionsDelete(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
);

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`fieldDefinitionId`: `Frameio.Uuid` —

`requestOptions`: `MetadataFields.RequestOptions`

#### client.metadataFields.metadataFieldDefinitionsUpdate(accountId, fieldDefinitionId, \{ ...params }) -> Frameio.FieldDefinitionResponse

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

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

**`usage`**

```ts usage

await client.metadataFields.metadataFieldDefinitionsUpdate(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        data: {
            field_type: "select",
            field_configuration: {
                enable_add_new: false,
                options: [
                    {
                        display_name: "Option 1",
                    },
                    {
                        display_name: "Option 2",
                    },
                ],
            },
            name: "Updated-Field-Name",
        },
    },
);
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`fieldDefinitionId`: `Frameio.Uuid` —

`request`: `Frameio.UpdateFieldDefinitionParams`

`requestOptions`: `MetadataFields.RequestOptions`

#### client.metadataFields.metadataFieldDefinitionsIndex(accountId, \{ ...params }) -> Frameio.FieldDefinitionsWithIncludesResponse

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

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

**`usage`**

```ts usage

await client.metadataFields.metadataFieldDefinitionsIndex("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`request`: `Frameio.MetadataFieldDefinitionsIndexRequest`

`requestOptions`: `MetadataFields.RequestOptions`

#### client.metadataFields.metadataFieldDefinitionsCreate(accountId, \{ ...params }) -> Frameio.FieldDefinitionResponse

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

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

**`usage`**

```ts usage

await client.metadataFields.metadataFieldDefinitionsCreate("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        field_type: "select",
        field_configuration: {
            enable_add_new: false,
            options: [
                {
                    display_name: "Option 1",
                },
                {
                    display_name: "Option 2",
                },
            ],
        },
        name: "Fields definition name",
    },
});

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`request`: `Frameio.CreateFieldDefinitionParams`

`requestOptions`: `MetadataFields.RequestOptions`

#### 프로젝트 권한

#### client.projectPermissions.index(accountId, projectId, \{ ...params }) -> core.Page\<Frameio.UserRole

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

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

**`usage`**

```ts usage

const response = await client.projectPermissions.index(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        include_deactivated: true,
        after: "<opaque_cursor>",
        page_size: 10,
        include_total_count: false,
    },
);
for await (const item of response) {
    console.log(item);
}

// Or you can manually iterate page-by-page
let page = await client.projectPermissions.index(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        include_deactivated: true,
        after: "<opaque_cursor>",
        page_size: 10,
        include_total_count: false,
    },
);
while (page.hasNextPage()) {
    page = page.getNextPage();
}

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`projectId`: `Frameio.Uuid` —

`request`: `Frameio.ProjectPermissionsIndexRequest`

`requestOptions`: `ProjectPermissions.RequestOptions`

#### client.projectPermissions.delete(accountId, projectId, userId) -> void

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

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

**`usage`**

```ts usage

await client.projectPermissions.delete(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
);
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`projectId`: `Frameio.Uuid` —

`userId`: `Frameio.Uuid` —

`requestOptions`: `ProjectPermissions.RequestOptions`

#### client.projectPermissions.projectUserRolesUpdate(accountId, projectId, userId, \{ ...params }) -> Frameio.UpdateUserRolesResponse

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

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

**`usage`**

```ts usage

await client.projectPermissions.projectUserRolesUpdate(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        data: {
            role: "editor",
        },
    },
);

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`projectId`: `Frameio.Uuid` —

`UserId`: `Frameio.Uuid` —

`request`: `Frameio.UpdateUserRolesParams`

`requestOptions`: `ProjectPermissions.RequestOptions`

#### 프로젝트

#### client.projects.show(accountId, projectId, \{ ...params }) -> Frameio.ProjectWithIncludesResponse

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

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

**`usage`**

```ts usage

await client.projects.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "owner",
});

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`projectId`: `Frameio.Uuid` —

`request`: `Frameio.ProjectsShowRequest`

`requestOptions`: `Projects.RequestOptions`

#### client.projects.delete(accountId, projectId) -> void

프로젝트를 삭제합니다.

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

**`usage`**

```ts usage

await client.projects.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`projectId`: `Frameio.Uuid` —

`requestOptions`: `Projects.RequestOptions`

#### client.projects.update(accountId, projectId, \{ ...params }) -> Frameio.ProjectResponse

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

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

**`usage`**

```ts usage

await client.projects.update("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        name: "Project Name",
        restricted: true,
        status: "active",
    },
});

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`projectId`: `Frameio.Uuid` —

`request`: `Frameio.ProjectUpdateParams`

`requestOptions`: `Projects.RequestOptions`

#### client.projects.index(accountId, workspaceId, \{ ...params }) -> core.Page\<Frameio.ProjectWithIncludes>

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

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

**`usage`**

```ts usage

const response = await client.projects.index(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        include: "owner",
        after: "<opaque_cursor>",
        page_size: 10,
        include_total_count: false,
    },
);
for await (const item of response) {
    console.log(item);
}

// Or you can manually iterate page-by-page
let page = await client.projects.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "owner",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
while (page.hasNextPage()) {
    page = page.getNextPage();
}

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`workspaceId`: `Frameio.Uuid` —

`request`: `Frameio.ProjectsIndexRequest`

`requestOptions`: `Projects.RequestOptions`

#### client.projects.create(accountId, workspaceId, \{ ...params }) -> Frameio.ProjectResponse

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

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

**`usage`**

```ts usage

await client.projects.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        name: "Project Name",
        restricted: true,
    },
});

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`workspaceId`: `Frameio.Uuid` —

`request`: `Frameio.ProjectsParams`

`requestOptions`: `Projects.RequestOptions`

#### client.projects.accountProjectsIndex(accountId, \{ ...params }) -> Frameio.ProjectsWithIncludesResponse

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

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

**`usage`**

```ts usage
await client.projects.accountProjectsIndex("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "owner",
    sort: "name_asc",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
```

**매개변수**

`accountId`: `Frameio.FrameOrAdobeId` —

`request`: `Frameio.AccountProjectsIndexRequest`

`requestOptions`: `Projects.RequestOptions`

#### client.projects.invitedProjectsIndex(accountId, \{ ...params }) -> Frameio.ProjectsWithIncludesResponse

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

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

**`usage`**

```ts usage
await client.projects.invitedProjectsIndex("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "owner",
    sort: "name_asc",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
```

**매개변수**

`accountId`: `Frameio.FrameOrAdobeId` —

`request`: `Frameio.InvitedProjectsIndexRequest`

`requestOptions`: `Projects.RequestOptions`

#### 검색

#### client.search.search(accountId, \{ ...params }) -> Frameio.SearchResponse

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

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

**`usage`**

```ts usage
await client.search.search("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    engine: "nlp",
    query: "red car driving on highway",
    filters: {
        files_and_version_stacks: true,
        folders: false,
        projects: false,
    },
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`request`: `Frameio.SearchParams`

`requestOptions`: `Search.RequestOptions`

#### 공유

#### client.shares.show(accountId, shareId) -> Frameio.ShareResponse

단일 공유를 표시합니다.

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

**`usage`**

```ts usage
await client.shares.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`shareId`: `Frameio.Uuid` —

`requestOptions`: `Shares.RequestOptions`

#### client.shares.delete(accountId, shareId) -> void

공유를 삭제합니다.

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

**`usage`**

```ts usage
await client.shares.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`shareId`: `Frameio.Uuid` —

`requestOptions`: `Shares.RequestOptions`

#### client.shares.update(accountId, shareId, \{ ...params }) -> Frameio.ShareResponse

공유를 업데이트합니다.

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

**`usage`**

```ts usage
await client.shares.update("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        access: "public",
        description: "A descriptive summary of the share",
        downloading_enabled: true,
        expiration: "2026-01-22T17:04:53Z",
        name: "Share Name",
        passphrase: "as!dfj39sd(*",
    },
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`shareId`: `Frameio.Uuid` —

`request`: `Frameio.UpdateShareParams`

`requestOptions`: `Shares.RequestOptions`

#### client.shares.listReviewers(accountId, shareId, \{ ...params }) -> core.Page\<Frameio.User>

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

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

**`usage`**

```ts usage
const response = await client.shares.listReviewers(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        after: "<opaque_cursor>",
        page_size: 10,
        include_total_count: false,
    },
);
for await (const item of response) {
    console.log(item);
}

// Or you can manually iterate page-by-page
let page = await client.shares.listReviewers(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        after: "<opaque_cursor>",
        page_size: 10,
        include_total_count: false,
    },
);
while (page.hasNextPage()) {
    page = page.getNextPage();
}
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`shareId`: `Frameio.Uuid` —

`request`: `Frameio.SharesListReviewersRequestreParams`

`requestOptions`: `Shares.RequestOptions`

#### client.shares.addReviewers(accountId, shareId, \{ ...params }) -> void

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

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

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

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

**`usage`**

```ts usage
await client.shares.addReviewers("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        message: "Please join my share!",
        reviewers: {
            emails: ["email1@domain.com", "email2@domain.com"],
        },
    },
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`shareId`: `Frameio.Uuid` —

`request`: `Frameio.AddReviewersToShareParams`

`requestOptions`: `Shares.RequestOptions`

#### client.shares.removeReviewers(accountId, shareId, \{ ...params }) -> void

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

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

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

**`usage`**

```ts usage
await client.shares.removeReviewers("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        reviewers: {
            adobe_user_ids: ["2A3C1A3D66C621B20A494021@176719f5667c82b4499999.e"],
        },
    },
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`shareId`: `Frameio.Uuid` —

`request`: `Frameio.RemoveReviewerParams`

`requestOptions`: `Shares.RequestOptions`

#### client.shares.removeAsset(accountId, shareId, assetId) -> Frameio.RemoveAssetResponse

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

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

**`usage`**

```ts usage
await client.shares.removeAsset(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
);
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`shareId`: `Frameio.Uuid` —

`assetId`: `Frameio.Uuid` —

`requestOptions`: `Shares.RequestOptions`

#### client.shares.addAsset(accountId, shareId, \{ ...params }) -> Frameio.AddAssetResponse

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

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

**`usage`**

```ts usage
await client.shares.addAsset("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        asset_id: "0cc1cb59-1d7c-4176-8532-afe099897318",
    },
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`shareId`: `Frameio.Uuid` —

`request`: `Frameio.AddAssetParams`

`requestOptions`: `Shares.RequestOptions`

#### client.shares.index(accountId, projectId, \{ ...params }) -> core.Page\<Frameio.Share>

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

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

**`usage`**

```ts usage
const response = await client.shares.index(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        after: "<opaque_cursor>",
        page_size: 10,
        include_total_count: false,
    },
);
for await (const item of response) {
    console.log(item);
}

// Or you can manually iterate page-by-page
let page = await client.shares.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
while (page.hasNextPage()) {
    page = page.getNextPage();
}
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`shareId`: `Frameio.Uuid` —

`request`: `Frameio.SharesIndexRequest`

`requestOptions`: `Shares.RequestOptions`

#### client.shares.create(accountId, projectId, \{ ...params }) -> Frameio.ShareResponse

공유를 생성합니다.

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

**`usage`**

```ts usage
await client.shares.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        type: "asset",
        access: "public",
        asset_ids: ["12eb1446-5736-4f93-85fc-3b636f156211", "f23a3b3e-7b1f-4655-b91a-acf0566e5bb9"],
        downloading_enabled: true,
        expiration: "2026-01-22T17:04:53Z",
        name: "Share Name",
        passphrase: "as!dfj39sd(*",
    },
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`projectId`: `Frameio.Uuid` —

`request`: `Frameio.CreateShareParams`

`requestOptions`: `Shares.RequestOptions`

#### 사용자

#### client.users.show() -> Frameio.ProfileResponse

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

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

**`usage`**

```ts usage
await client.users.show();
```

**매개변수**

`requestOptions`: `Users.RequestOptions`

#### 버전 스택

#### client.versionStacks.index(accountId, versionStackId, \{ ...params }) -> Frameio.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`**

```ts usage

await client.versionStacks.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "media_links",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`projectId`: `Frameio.Uuid` —

`request`: `Frameio.VersionStacksIndexRequest`

`requestOptions`: `VersionStacks.RequestOptions`

#### client.versionStacks.show(accountId, versionStackId, \{ ...params }) -> Frameio.VersionStackWithIncludesResponse

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

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

**`usage`**

```ts usage

await client.versionStacks.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "media_links",
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`versionStackId`: `Frameio.Uuid` —

`request`: `Frameio.VersionStacksShowRequest`

`requestOptions`: `VersionStacks.RequestOptions`

#### client.versionStacks.copy(accountId, versionStackId, \{ ...params }) -> Frameio.VersionStackCopyResponse

버전 스택을 복사합니다.

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

**`usage`**

```ts usage

await client.versionStacks.copy("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    copy_metadata: true,
    data: {
        parent_id: "2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
    },
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`versionStackId`: `Frameio.Uuid` —

`request`: `Frameio.VersionStackCopyParams`

`requestOptions`: `VersionStacks.RequestOptions`

#### client.versionStacks.list(accountId, folderId, \{ ...params }) -> Frameio.VersionStacksWithIncludesResponse

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

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

**`usage`**

```ts usage

await client.versionStacks.list("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "media_links",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.VersionStacksListRequest`

`requestOptions`: `VersionStacks.RequestOptions`

#### client.versionStacks.create(accountId, folderId, \{ ...params }) -> Frameio.VersionStackWithIncludesResponse

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

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

**`usage`**

```ts usage

await client.versionStacks.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        file_ids: ["dd2a3cdd-fc90-41bd-a7b8-8a0447aec6d4", "79fed48a-8372-496e-8dcb-5e959b9b9fcf"],
    },
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.VersionStackCreateParams`

`requestOptions`: `VersionStacks.RequestOptions`

#### client.versionStacks.move(accountId, versionStackId, \{ ...params }) -> Frameio.VersionStackResponse

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

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

**`usage`**

```ts usage

await client.versionStacks.move("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        parent_id: "2e426fe0-f965-4594-8b2b-b4dff1dc00ec",
    },
});
```

**매개변수**

`accountId`: `Frameio.Uuid` —

`folderId`: `Frameio.Uuid` —

`request`: `Frameio.VersionStackMoveParams`

`requestOptions`: `VersionStacks.RequestOptions`

#### Webhook

#### client.webhooks.index(accountId, workspaceId, \{ ...params }) -> core.Page\<Frameio.WebhookWithIncludes>

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

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

**`usage`**

```ts usage
const response = await client.webhooks.index(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        include: "creator",
        after: "<opaque_cursor>",
        page_size: 10,
        include_total_count: false,
    },
);
for await (const item of response) {
    console.log(item);
}

// Or you can manually iterate page-by-page
let page = await client.webhooks.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
while (page.hasNextPage()) {
    page = page.getNextPage();
}

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`workspaceId`: `Frameio.Uuid` —

`request`: `Frameio.WebhooksIndexRequest`

`requestOptions`: `Webhooks.RequestOptions`

#### client.webhooks.create(accountId, workspaceId, \{ ...params }) -> Frameio.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`**

```ts usage
await client.webhooks.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        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",
    },
});

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`workspaceId`: `Frameio.Uuid` —

`request`: `Frameio.WebhookCreateParams`

`requestOptions`: `Webhooks.RequestOptions`

#### client.webhooks.show(accountId, webhookId, \{ ...params }) -> Frameio.WebhookWithIncludesResponse

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

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

**`usage`**

```ts usage
await client.webhooks.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
});

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`webhookId`: `Frameio.Uuid` —

`request`: `Frameio.WebhooksShowRequest`

`requestOptions`: `Webhooks.RequestOptions`

#### client.webhooks.delete(accountId, webhookId) -> void

웹훅을 삭제합니다.

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

**`usage`**

```ts usage
await client.webhooks.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`webhookId`: `Frameio.Uuid` —

`requestOptions`: `Webhooks.RequestOptions`

#### client.webhooks.update(accountId, webhookId, \{ ...params }) -> Frameio.WebhookResponse

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

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

**`usage`**

```ts usage
await client.webhooks.update("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        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",
    },
});

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`webhookId`: `Frameio.Uuid` —

`request`: `Frameio.WebhookUpdateParams`

`requestOptions`: `Webhooks.RequestOptions`

#### 작업 공간 권한

#### client.workspacePermissions.index(accountId, workspaceId, \{ ...params }) -> core.Page\<Frameio.UserRole>

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

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

**`usage`**

```ts usage
const response = await client.workspacePermissions.index(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        include_deactivated: true,
        after: "<opaque_cursor>",
        page_size: 10,
        include_total_count: false,
    },
);
for await (const item of response) {
    console.log(item);
}

// Or you can manually iterate page-by-page
let page = await client.workspacePermissions.index(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        include_deactivated: true,
        after: "<opaque_cursor>",
        page_size: 10,
        include_total_count: false,
    },
);
while (page.hasNextPage()) {
    page = page.getNextPage();
}

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`workspaceId`: `Frameio.Uuid` —

`request`: `Frameio.WorkspacePermissionsIndexRequest`

`requestOptions`: `WorkspacePermissions.RequestOptions`

#### client.workspacePermissions.workspaceUserRolesDelete(accountId, workspaceId, userId) -> void

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

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

**`usage`**

```ts usage
await client.workspacePermissions.workspaceUserRolesDelete(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
);

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`workspaceId`: `Frameio.Uuid` —

`userId`: `Frameio.Uuid` —

`requestOptions`: `WorkspacePermissions.RequestOptions`

#### client.workspacePermissions.workspaceUserRolesUpdate(accountId, workspaceId, userId, \{ ...params }) -> Frameio.UpdateUserRolesResponse

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

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

**`usage`**

```ts usage
await client.workspacePermissions.workspaceUserRolesUpdate(
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b",
    {
        data: {
            role: "editor",
        },
    },
);

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`workspaceId`: `Frameio.Uuid` —

`userId`: `Frameio.Uuid` —

`request`: `Frameio.UpdateUserRolesParams`

`requestOptions`: `WorkspacePermissions.RequestOptions`

#### Workspace

#### client.workspaces.show(accountId, workspaceId, \{ ...params }) -> Frameio.WorkspaceWithIncludesResponse

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

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

**`usage`**

```ts usage
await client.workspaces.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
});

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`workspaceId`: `Frameio.Uuid` —

`request`: `Frameio.WorkspacesShowRequest`

`requestOptions`: `Workspaces.RequestOptions`

#### client.workspaces.delete(accountId, workspaceId) -> void

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

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

**`usage`**

```ts usage
await client.workspaces.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b");

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`workspaceId`: `Frameio.Uuid` —

`requestOptions`: `Workspaces.RequestOptions`

#### client.workspaces.update(accountId, workspaceId, \{ ...params }) -> Frameio.WorkspaceResponse

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

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

**`usage`**

```ts usage
await client.workspaces.update("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        name: "My Workspace",
    },
});

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`workspaceId`: `Frameio.Uuid` —

`request`: `Frameio.WorkspaceParams`

`requestOptions`: `Workspaces.RequestOptions`

#### client.workspaces.index(accountId, \{ ...params }) -> core.Page\<Frameio.WorkspaceWithIncludes>

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

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

**`usage`**

```ts usage
const response = await client.workspaces.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
for await (const item of response) {
    console.log(item);
}

// Or you can manually iterate page-by-page
let page = await client.workspaces.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    include: "creator",
    after: "<opaque_cursor>",
    page_size: 10,
    include_total_count: false,
});
while (page.hasNextPage()) {
    page = page.getNextPage();
}

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`request`: `Frameio.WorkspacesIndexRequest`

`requestOptions`: `Workspaces.RequestOptions`

#### client.workspaces.create(accountId, \{ ...params }) -> Frameio.WorkspaceResponse

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

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

**`usage`**

```ts usage
await client.workspaces.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", {
    data: {
        name: "My Workspace",
    },
});

```

**매개변수**

`accountId`: `Frameio.Uuid` —

`request`: `Frameio.WorkspaceParams`

`requestOptions`: `Workspaces.RequestOptions`

---

### npm

> **Launch**
>
> [npm](https://www.npmjs.com/package/frameio)에서 보기

---