> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://next.developer.frame.io/platform/v4/docs/sdk-reference/type-script-sdk-reference/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 Reference --- ### Installation ```curl npm i -s frameio ``` --- ### Usage Instantiate and use the client with the following: ```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", }, }); ``` --- ### Request And Response Types The SDK exports all request and response types as TypeScript interfaces. Simply import them with the following namespace: ```ts import { Frameio } from "frameio"; const request: Frameio.UpdateFieldDefinitionParams = { ... }; ``` --- ### Exception Handling When the API returns a non-success status code (4xx or 5xx response), a subclass of the following error will be thrown. ```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); } } ``` --- ### Advanced #### Additional Headers If you would like to send additional headers as part of the request, use the headers request option. ```ts const response = await client.metadataFields.metadataFieldDefinitionsCreate(..., { headers: { 'X-Custom-Header': 'custom value' } }); ``` #### Additional Query String Parameters If you would like to send additional query string parameters as part of the request, use the queryParams request option. ```ts const response = await client.metadataFields.metadataFieldDefinitionsCreate(..., { queryParams: { 'customQueryParamKey': 'custom query param value' } }); ``` --- #### Retries The SDK is instrumented with automatic retries with exponential backoff. A request will be retried as long as the request is deemed retryable and the number of retry attempts has not grown larger than the configured retry limit (default: 2). A request is deemed retryable when any of the following HTTP status codes is returned: * 408 (Timeout) * 429 (Too Many Requests) * 5XX (Internal Server Errors) \ Use the `maxRetries` request option to configure this behavior. ```ts const response = await client.metadataFields.metadataFieldDefinitionsCreate(..., { maxRetries: 0 // override maxRetries at the request level }); ``` --- #### Timeouts The SDK defaults to a 60 second timeout. Use the timeoutInSeconds option to configure this behavior. ```ts const response = await client.metadataFields.metadataFieldDefinitionsCreate(..., { timeoutInSeconds: 30 // override timeout to 30s }); ``` #### Aborting Requests The SDK allows users to abort requests at any point by passing in an abort signal. ```ts const controller = new AbortController(); const response = await client.metadataFields.metadataFieldDefinitionsCreate(..., { abortSignal: controller.signal }); controller.abort(); // aborts the request ``` --- #### Access Raw Response Data The SDK provides access to raw response data, including headers, through the `.withRawResponse()` method. The `.withRawResponse()` method returns a promise that results to an object with a `data` and a `rawResponse` property. ```ts const { data, rawResponse } = await client.metadataFields.metadataFieldDefinitionsCreate(...).withRawResponse(); console.log(data); console.log(rawResponse.headers['X-My-Header']); ``` #### Runtime Compatibility The SDK works in the following runtimes: * Node.js 18+ * Vercel * Cloudflare Workers * Deno v1.25+ * Bun 1.0+ * React Native --- #### Customizing Fetch Client The SDK provides a way for you to customize the underlying HTTP client / Fetch function. If you're running in an unsupported environment, this provides a way for you to break glass and ensure the SDK works. ```ts import { FrameioClient } from "frameio"; const client = new FrameioClient({ ... fetcher: // provide your implementation here }); ``` --- ### Reference #### Account Permissions #### client.accountPermissions.index(accountId, \{ ...params }) -> core.Page\ List user roles for a given account.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage const response = await client.accountPermissions.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include_deactivated: true, sort: "role_asc", after: "", 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, sort: "role_asc", after: "", page_size: 10, include_total_count: false, }); while (page.hasNextPage()) { page = page.getNextPage(); } ``` **Parameters** `accountId`: `Frameio.Uuid` — `request`: `Frameio.AccountPermissionsIndexRequest` `requestOptions`: `AccountPermissions.RequestOptions` #### Accounts #### client.accounts.index(\{ ...params }) -> core.Page\ List accounts for the current user.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage const response = await client.accounts.index({ sort: "display_name_asc", after: "", 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({ sort: "display_name_asc", after: "", page_size: 10, include_total_count: false, }); while (page.hasNextPage()) { page = page.getNextPage(); } ``` **Parameters** `request`: `Frameio.AccountsIndexRequest` `requestOptions`: `Accounts.RequestOptions` #### client.accounts.auditlogIndex(accountId, \{ ...params }) -> Frameio.AuditLogsWithIncludesResponse List audit logs with filtering capabilities via query params.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.accounts.auditlogIndex("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "user", after: "", page_size: 10, include_total_count: false, }); ``` **Parameters** `accountId`: `Frameio.FrameOrAdobeId` — `request`: `Frameio.AuditlogIndexRequest` `requestOptions`: `Accounts.RequestOptions` #### Auth #### new ServerToServerAuth(\{ clientId, clientSecret, ... }) Authenticate using the OAuth 2.0 `client_credentials` grant. This flow does not involve a user and does not return a refresh token. When the access token expires the SDK automatically requests a new one using the client credentials. **`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() }); ``` **Parameters** `clientId`: `string` — Adobe IMS OAuth client ID. `clientSecret`: `string` — Adobe IMS OAuth client secret. `scopes`: `string` — Space-separated scopes (OAuth 2.0 RFC 6749). Defaults to the server-to-server scopes. `imsBaseUrl`: `string` — IMS base URL for staging/alternative environments. Defaults to production. `fetch`: `typeof fetch` — Custom fetch implementation (for proxy, TLS, etc.). `onTokenRefreshed`: `OnTokenRefreshed` — Optional callback fired after every token fetch. `timeout`: `number` — HTTP request timeout in milliseconds. Defaults to 30000. `maxRetries`: `number` — Maximum retries for transient failures. Defaults to 2. `refreshBuffer`: `number` — Seconds before expiry to trigger proactive refresh. Defaults to 60. `logger`: `Logger` — Logger instance for diagnostic output. **Methods** `getToken(): Promise` — Return a valid access token, refreshing if necessary. Pass it to the client: `new FrameioClient({ token: () => auth.getToken() })`. `authenticate(): Promise` — Explicitly fetch a new access token. `revoke(): Promise` — Revoke tokens server-side and clear local state. `exportTokens(): ExportedTokens` — Export current token state for persistence. `importTokens(data: ExportedTokens): void` — Restore token state from a previously exported object. #### new WebAppAuth(\{ clientId, clientSecret, redirectUri, ... }) Authenticate using the OAuth 2.0 `authorization_code` grant. Use this for server-side applications that can securely store a client secret. **`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() }); ``` **Parameters** `clientId`: `string` — Adobe IMS OAuth client ID. `clientSecret`: `string` — Adobe IMS OAuth client secret. `redirectUri`: `string` — Registered redirect URI. `scopes`: `string` — Space-separated scopes (OAuth 2.0 RFC 6749). `imsBaseUrl`: `string` — IMS base URL for staging/alternative environments. Defaults to production. `fetch`: `typeof fetch` — Custom fetch implementation (for proxy, TLS, etc.). `onTokenRefreshed`: `OnTokenRefreshed` — Optional callback fired after every token refresh. `timeout`: `number` — HTTP request timeout in milliseconds. Defaults to 30000. `maxRetries`: `number` — Maximum retries for transient failures. Defaults to 2. `refreshBuffer`: `number` — Seconds before expiry to trigger proactive refresh. Defaults to 60. `logger`: `Logger` — Logger instance for diagnostic output. **Methods** `getToken(): Promise` — Return a valid access token, refreshing if necessary. `getAuthorizationUrl({ state }): string` — Build the Adobe IMS authorization URL. Pass an opaque CSRF/state value that will be echoed back. `exchangeCode(code: string): Promise` — Exchange an authorization code for access and refresh tokens. `refresh(): Promise` — Manually trigger a token refresh. `revoke(): Promise` — Revoke tokens server-side and clear local state. `exportTokens(): ExportedTokens` — Export current token state for persistence. `importTokens(data: ExportedTokens): void` — Restore token state from a previously exported object. #### new SPAAuth(\{ clientId, redirectUri, ... }) Authenticate using `authorization_code` + PKCE (no client secret). Use this for browser-based single-page apps that cannot securely store a client secret. **`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() }); ``` **Parameters** `clientId`: `string` — Adobe IMS OAuth client ID. `redirectUri`: `string` — Registered redirect URI. `scopes`: `string` — Space-separated scopes (OAuth 2.0 RFC 6749). `imsBaseUrl`: `string` — IMS base URL for staging/alternative environments. Defaults to production. `fetch`: `typeof fetch` — Custom fetch implementation (for proxy, TLS, etc.). `onTokenRefreshed`: `OnTokenRefreshed` — Optional callback fired after every token refresh. `timeout`: `number` — HTTP request timeout in milliseconds. Defaults to 30000. `maxRetries`: `number` — Maximum retries for transient failures. Defaults to 2. `refreshBuffer`: `number` — Seconds before expiry to trigger proactive refresh. Defaults to 60. `logger`: `Logger` — Logger instance for diagnostic output. **Methods** `getToken(): Promise` — Return a valid access token, refreshing if necessary. `getAuthorizationUrl({ state }): Promise` — Build the Adobe IMS authorization URL with a PKCE challenge. Returns an `AuthorizationUrlResult` with `url` and `codeVerifier`. `exchangeCode({ code, codeVerifier }): Promise` — Exchange an authorization code + PKCE verifier for tokens. `refresh(): Promise` — Manually trigger a token refresh. `revoke(): Promise` — Revoke tokens server-side and clear local state. `exportTokens(): ExportedTokens` — Export current token state for persistence. `importTokens(data: ExportedTokens): void` — Restore token state from a previously exported object. #### new NativeAppAuth(\{ clientId, redirectUri, ... }) Authenticate using `authorization_code` + PKCE for desktop and mobile applications. Shares the same API as `SPAAuth`; use a custom-scheme redirect URI (e.g. `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() }); ``` **Parameters** `clientId`: `string` — Adobe IMS OAuth client ID. `redirectUri`: `string` — Registered redirect URI (custom scheme supported). `scopes`: `string` — Space-separated scopes (OAuth 2.0 RFC 6749). `imsBaseUrl`: `string` — IMS base URL for staging/alternative environments. Defaults to production. `fetch`: `typeof fetch` — Custom fetch implementation (for proxy, TLS, etc.). `onTokenRefreshed`: `OnTokenRefreshed` — Optional callback fired after every token refresh. `timeout`: `number` — HTTP request timeout in milliseconds. Defaults to 30000. `maxRetries`: `number` — Maximum retries for transient failures. Defaults to 2. `refreshBuffer`: `number` — Seconds before expiry to trigger proactive refresh. Defaults to 60. `logger`: `Logger` — Logger instance for diagnostic output. **Methods** Same as `SPAAuth`: `getToken()`, `getAuthorizationUrl({ state })`, `exchangeCode({ code, codeVerifier })`, `refresh()`, `revoke()`, `exportTokens()`, `importTokens(data)`. #### AuthorizationUrlResult Object returned by `SPAAuth.getAuthorizationUrl()` and `NativeAppAuth.getAuthorizationUrl()`. Holds the authorization URL and the PKCE code verifier. **Properties** `url`: `string` — The full authorization URL to redirect the user to. `codeVerifier`: `string` — The PKCE code verifier to store and pass to `exchangeCode()`. #### Auth Exceptions All auth errors extend `FrameioAuthError` and are importable from `frameio`. | Exception | Description | | --------------------- | ------------------------------------------------------------------------------------ | | `FrameioAuthError` | Base error for all auth-SDK errors. | | `AuthenticationError` | Token exchange or refresh failed. Has `errorCode` and `errorDescription` properties. | | `TokenExpiredError` | Refresh token is expired; re-authentication is required. | | `NetworkError` | A network request failed (timeout, connection error, etc.). | | `RateLimitError` | Adobe IMS returned 429 and retries are exhausted. Has a `retryAfter` property. | | `PKCEError` | PKCE verification failed. | | `ConfigurationError` | Required configuration is missing or invalid. | #### Collections #### client.collections.index(accountId, projectId, \{ ...params }) -> Frameio.CollectionsResponse List collections for a project.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.collections.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "creator,project", after: "", page_size: 10, include_total_count: false, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `projectId`: `Frameio.Uuid` — `request`: `Frameio.CollectionsIndexRequest` `requestOptions`: `Collections.RequestOptions` #### client.collections.show(accountId, collectionId, \{ ...params }) -> Frameio.CollectionResponse Show collection details.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.collections.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "creator,project", }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `collectionId`: `Frameio.Uuid` — `request`: `Frameio.CollectionsShowRequest` `requestOptions`: `Collections.RequestOptions` #### Comments #### client.comments.show(accountId, commentId, \{ ...params }) -> Frameio.CommentWithIncludesResponse Show a single comment on a file.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.comments.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { timestamp_as_timecode: true, include: "owner", }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `commentId`: `Frameio.Uuid` — `request`: `Frameio.CommentsShowRequest` `requestOptions`: `Comments.RequestOptions` #### client.comments.delete(accountId, commentId) -> void Delete comment from an asset.\ Rate Limits: 60 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.comments.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b"); ``` **Parameters** `accountId`: `Frameio.Uuid` — `commentId`: `Frameio.Uuid` — `requestOptions`: `Comments.RequestOptions` #### client.comments.update(accountId, commentId, \{ ...params }) -> Frameio.CommentResponse Update comment on given asset.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`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!", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `commentId`: `Frameio.Uuid` — `request`: `Frameio.UpdateCommentParams` `requestOptions`: `Comments.RequestOptions` #### client.comments.index(accountId, fileId, \{ ...params }) -> core.Page\ List comments on a given asset.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage const response = await client.comments.index( "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { timestamp_as_timecode: true, include: "owner", sort: "owner_asc", after: "", 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", { timestamp_as_timecode: true, include: "owner", sort: "owner_asc", after: "", page_size: 10, include_total_count: false, }); while (page.hasNextPage()) { page = page.getNextPage(); } ``` **Parameters** `accountId`: `Frameio.Uuid` — `fileId`: `Frameio.Uuid` — `request`: `Frameio.CommentsIndexRequest` `requestOptions`: `Comments.RequestOptions` #### client.comments.create(accountId, fileId, \{ ...params }) -> Frameio.CommentResponse Create a comment on a file.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`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", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `fileId`: `Frameio.Uuid` — `request`: `Frameio.CreateCommentParams` `requestOptions`: `Comments.RequestOptions` #### client.comments.createAttachment(accountId, commentId, \{ ...params }) -> Frameio.CommentAttachmentResponse Create an attachment for an existing comment.\ Rate Limits: 60 calls per 1.00 minute(s) per account\_user **`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", }, }); ``` **Parameters** `accountId`: `Frameio.FrameOrAdobeId` — `commentId`: `Frameio.Uuid` — `request`: `Frameio.CreateAttachmentParams` `requestOptions`: `Comments.RequestOptions` #### client.comments.deleteAttachment(accountId, commentId, attachmentId) -> void Delete an attachment from a comment.\ Rate Limits: 60 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.comments.deleteAttachment("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b"); ``` **Parameters** `accountId`: `Frameio.FrameOrAdobeId` — `commentId`: `Frameio.Uuid` — `attachmentId`: `Frameio.Uuid` — `requestOptions`: `Comments.RequestOptions` #### Custom Actions #### client.customActions.actionsIndex(accountId, workspaceId, \{ ...params }) -> Frameio.ActionsWithIncludesResponse List actions in a given workspace.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.customActions.actionsIndex("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "creator", after: "", page_size: 10, include_total_count: false, }); ``` **Parameters** `accountId`: `Frameio.FrameOrAdobeId` — `workspaceId`: `Frameio.Uuid` — `request`: `Frameio.ActionsIndexRequest` `requestOptions`: `CustomActions.RequestOptions` #### client.customActions.actionsShow(accountId, actionId, \{ ...params }) -> Frameio.ActionWithIncludesResponse Show custom action details.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.customActions.actionsShow("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "creator", }); ``` **Parameters** `accountId`: `Frameio.FrameOrAdobeId` — `actionId`: `Frameio.Uuid` — `request`: `Frameio.ActionsShowRequest` `requestOptions`: `CustomActions.RequestOptions` #### client.customActions.actionsCreate(accountId, workspaceId, \{ ...params }) -> Frameio.ActionCreateResponse Create a custom action in a workspace.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`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", }, }); ``` **Parameters** `accountId`: `Frameio.FrameOrAdobeId` — `workspaceId`: `Frameio.Uuid` — `request`: `Frameio.ActionCreateParams` `requestOptions`: `CustomActions.RequestOptions` #### client.customActions.actionsUpdate(accountId, actionId, \{ ...params }) -> Frameio.ActionResponse Update custom action details.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`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", }, }); ``` **Parameters** `accountId`: `Frameio.FrameOrAdobeId` — `actionId`: `Frameio.Uuid` — `request`: `Frameio.ActionUpdateParams` `requestOptions`: `CustomActions.RequestOptions` #### client.customActions.actionsDelete(accountId, actionId) -> void Delete a custom action.\ Rate Limits: 60 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.customActions.actionsDelete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b"); ``` **Parameters** `accountId`: `Frameio.FrameOrAdobeId` — `actionId`: `Frameio.Uuid` — `requestOptions`: `CustomActions.RequestOptions` #### Files #### client.files.list(accountId, folderId, \{ ...params }) -> Frameio.FileAssetsWithIncludesResponse List files in a given folder.\ Rate Limits: 5 calls per 1 second(s) per account\_user **`usage`** ```ts usage await client.files.list("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "media_links.original", sort: "name_asc", after: "", page_size: 10, include_total_count: false, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `folderId`: `Frameio.Uuid` — `request`: `Frameio.FilesListRequest` `requestOptions`: `Files.RequestOptions` #### client.files.create(accountId, folderId, \{ ...params }) -> Frameio.FileWithUploadUrlsResponse Create new file under parent folder. `Create file (local upload)` and `Create file (remote upload)` have replaced this endpoint.\ Rate Limits: 5 calls per 1 second(s) per account\_user **`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", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `folderId`: `Frameio.Uuid` — `request`: `Frameio.FileCreateParams` `requestOptions`: `Files.RequestOptions` #### client.files.show(accountId, fileId, \{ ...params }) -> Frameio.FileWithIncludesResponse Show file details.\ Use the include query parameter to selectively include additional properties in the response. > **Note** > > If you include `media_links.original` and the user does not have permission to download the file then this endpoint will respond with a `403 Forbidden` error. If the content is inaccessible because watermarking is required for this user and isn't supported by the requested media\_links, then the request will succeed but the unsupported media links will be set to null. Similarly, if a requested transcode link does not exist for a particular file (e.g. including `media_links.video_h264_180` on a static image file) or transoding process hasn't completed (i.e. the file's status is "uploaded" rather than "transcoded"), then the link will also be set to null in the response payload. In short, the client must handle null media links gracefully. Rate Limits: 10 calls per 1 second(s) per account\_user **`usage`** ```ts usage await client.files.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "media_links", }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `folderId`: `Frameio.Uuid` — `request`: `Frameio.FilesShowRequest` `requestOptions`: `Files.RequestOptions` #### client.files.delete(accountId, fileId) -> void Delete file by ID.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.files.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b"); ``` **Parameters** `accountId`: `Frameio.Uuid` — `fileId`: `Frameio.Uuid` — `requestOptions`: `Files.RequestOptions` #### client.files.update(accountId, fileId, \{ ...params }) -> Frameio.FileResponse Update file details.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.files.update("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { data: { name: "asset.png", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `fileId`: `Frameio.Uuid` — `request`: `Frameio.FileUpdateParams` `requestOptions`: `Files.RequestOptions` #### client.files.copy(accountId, fileId, \{ ...params }) -> Frameio.FileCopyResponse Copy file.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`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", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `fileId`: `Frameio.Uuid` — `request`: `Frameio.FileCopyParams` `requestOptions`: `Files.RequestOptions` #### client.files.createRemoteUpload(accountId, folderId, \{ ...params }) -> Frameio.FileRemoteUploadResponse Create new file under parent folder through remote upload.\ Rate Limits: 5 calls per 1 second(s) per account\_user **`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", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `folderId`: `Frameio.Uuid` — `request`: `Frameio.FileCreateRemoteUploadParams` `requestOptions`: `Files.RequestOptions` #### client.files.move(accountId, fileId, \{ ...params }) -> Frameio.FileResponse Move file to a folder or version\_stack.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`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", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `fileId`: `Frameio.Uuid` — `request`: `Frameio.FileMoveParams` `requestOptions`: `Files.RequestOptions` #### client.files.createLocalUpload(accountId, folderId, \{ ...params }) -> Frameio.FileWithUploadUrlsResponse Create new file under parent folder through local upload.\ Rate Limits: 5 calls per 1 second(s) per account\_user **`usage`** ```ts usage await client.files.createLocalUpload("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { data: { file_size: 1137444, name: "asset.png", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `folderId`: `Frameio.Uuid` — `request`: `Frameio.FileCreateLocalUploadParams` `requestOptions`: `Files.RequestOptions` #### client.files.showFileUploadStatus(accountId, fileId) -> Frameio.FileUploadStatusResponse Show file upload status details.\ Rate Limits: 5 calls per 1 second(s) per account\_user **`usage`** ```ts usage await client.files.showFileUploadStatus("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b"); ``` **Parameters** `accountId`: `Frameio.Uuid` — `fileId`: `Frameio.Uuid` — `requestOptions`: `Files.RequestOptions` #### client.files.importFile(accountId, folderId, \{ ...params }) -> Frameio.FileResponse Import a file from a storage location configured on the account.\ Rate Limits: 5 calls per 1 second(s) per account\_user **`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", }, }); ``` **Parameters** `accountId`: `Frameio.FrameOrAdobeId` — `folderId`: `Frameio.FrameOrAdobeId` — `request`: `Frameio.FileImportParams` `requestOptions`: `Files.RequestOptions` #### Folder Permissions #### client.folderPermissions.folderUserRolesIndex(accountId, folderId, \{ ...params }) -> Frameio.UserRolesResponse List user roles for a given folder.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.folderPermissions.folderUserRolesIndex("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include_deactivated: true, after: "", page_size: 10, include_total_count: false, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `folderId`: `Frameio.Uuid` — `request`: `Frameio.FolderUserRolesIndexRequest` `requestOptions`: `FolderPermissions.RequestOptions` #### client.folderPermissions.folderUserRolesUpdate(accountId, folderId, userId, \{ ...params }) -> Frameio.UpdateUserRolesResponse Update user roles for the given folder if the user is already added to the folder. If the user is not added to the folder, the user will be added with the given role.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`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", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `folderId`: `Frameio.Uuid` — `userId`: `Frameio.Uuid` — `request`: `Frameio.UpdateUserRolesParams` `requestOptions`: `FolderPermissions.RequestOptions` #### client.folderPermissions.delete(accountId, folderId, userId) -> void Remove a user from a given folder.\ Rate Limits: 60 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.folderPermissions.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b"); ``` **Parameters** `accountId`: `Frameio.Uuid` — `folderId`: `Frameio.Uuid` — `userId`: `Frameio.Uuid` — `requestOptions`: `FolderPermissions.RequestOptions` #### Folders #### client.folders.show(accountId, folderId, \{ ...params }) -> Frameio.FolderWithIncludesResponse Show folder details.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.folders.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "creator", }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `projectId`: `Frameio.Uuid` — `request`: `Frameio.FoldersShowRequest` `requestOptions`: `Folders.RequestOptions` #### client.folders.delete(accountId, folderId) -> void Delete folder by id.\ Rate Limits: 60 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.folders.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b"); ``` **Parameters** `accountId`: `Frameio.Uuid` — `folderId`: `Frameio.Uuid` — `requestOptions`: `Folders.RequestOptions` #### client.folders.update(accountId, folderId, \{ ...params }) -> Frameio.FolderResponse Update folder details.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.folders.update("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { data: { name: "Folder name", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `folderId`: `Frameio.Uuid` — `request`: `Frameio.FolderUpdateParams` `requestOptions`: `Folders.RequestOptions` #### client.folders.index(accountId, folderId, \{ ...params }) -> Frameio.AssetsWithIncludesResponse List the children in the given folder.\ Use the include query parameter to selectively include additional properties in the response. > **Note** > > If you include `media_links.original` and the user does not have permission to download files in the corresponding project, then this endpoint will respond with a `403 Forbidden` error. If the content is inaccessible because watermarking is required for this user and isn't supported by the requested media\_links, then the request will succeed but the unsupported media links will be set to null. Similarly, if a requested transcode link does not exist for a particular file (e.g. including `media_links.video_h264_180` on a static image file) or transoding process hasn't finished (i.e. the file's status is "uploaded" rather than "transcoded"), then the a media link will also be set to null in the response payload. In short, the client must handle null media links gracefully. Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`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: "", page_size: 10, include_total_count: false, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `folderId`: `Frameio.Uuid` — `request`: `Frameio.FolderIndexRequest` `requestOptions`: `Folders.RequestOptions` #### client.folders.copy(accountId, folderId, \{ ...params }) -> Frameio.FolderCopyResponse Copy folder.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`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", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `folderId`: `Frameio.Uuid` — `request`: `Frameio.FolderCopyParams` `requestOptions`: `Folders.RequestOptions` #### client.folders.list(accountId, folderId, \{ ...params }) -> Frameio.FoldersWithIncludesResponse List folders in a given folder.\ Rate Limits: 5 calls per 1 second(s) per account\_user **`usage`** ```ts usage await client.folders.list("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "creator", after: "", page_size: 10, include_total_count: false, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `folderId`: `Frameio.Uuid` — `request`: `Frameio.FoldersListRequest` `requestOptions`: `Folders.RequestOptions` #### client.folders.create(accountId, folderId, \{ ...params }) -> Frameio.FolderResponse Create a new folder inside the given `folder_id` path param. Rate Limits: 3 calls per 1 second(s) per account\_user **`usage`** ```ts usage await client.folders.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { data: { name: "Folder name", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `folderId`: `Frameio.Uuid` — `request`: `Frameio.FolderCreateParams` `requestOptions`: `Folders.RequestOptions` #### client.folders.move(accountId, folderId, \{ ...params }) -> Frameio.FolderResponse Move folder to a folder.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`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", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `folderId`: `Frameio.Uuid` — `request`: `Frameio.FolderMoveParams` `requestOptions`: `Folders.RequestOptions` #### Groups #### client.groups.index(accountId, \{ ...params }) -> Frameio.GroupsWithIncludesResponse List groups in account.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.groups.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "creator", sort: "creator_asc", after: "", page_size: 10, include_total_count: false, }); ``` **Parameters** `accountId`: `Frameio.FrameOrAdobeId` — `request`: `Frameio.GroupsIndexRequest` `requestOptions`: `Groups.RequestOptions` #### client.groups.show(accountId, groupId, \{ ...params }) -> Frameio.GroupWithIncludesResponse Show group details.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.groups.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "creator", }); ``` **Parameters** `accountId`: `Frameio.FrameOrAdobeId` — `groupId`: `Frameio.Uuid` — `request`: `Frameio.GroupsShowRequest` `requestOptions`: `Groups.RequestOptions` #### client.groups.create(accountId, \{ ...params }) -> Frameio.GroupResponse Create group for the current account.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.groups.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { data: { emoji: "smile", name: "group-1", }, }); ``` **Parameters** `accountId`: `Frameio.FrameOrAdobeId` — `request`: `Frameio.CreateGroupParams` `requestOptions`: `Groups.RequestOptions` #### client.groups.update(accountId, groupId, \{ ...params }) -> Frameio.GroupResponse Update group details.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.groups.update("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { data: { emoji: "smile", name: "group-1", }, }); ``` **Parameters** `accountId`: `Frameio.FrameOrAdobeId` — `groupId`: `Frameio.Uuid` — `request`: `Frameio.UpdateGroupParams` `requestOptions`: `Groups.RequestOptions` #### Metadata #### client.metadata.bulkUpdate(accountId, projectId, \{ ...params }) -> void Update metadata values across multiple files.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`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", }, ], }, ], }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `projectId`: `Frameio.Uuid` — `request`: `Frameio.BulkUpdateMetadataParams` `requestOptions`: `Metadata.RequestOptions` #### client.metadata.show(accountId, fileId, \{ ...params }) -> Frameio.MetadataResponse Show the metadata of a file.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.metadata.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { show_null: true, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `fileId`: `Frameio.Uuid` — `request`: `Frameio.MetadataShowRequest` `requestOptions`: `Metadata.RequestOptions` #### Metadata Fields #### client.metadataFields.metadataFieldDefinitionsDelete(accountId, fieldDefinitionId) -> void Delete account level custom field definitions.\ Rate Limits: 60 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.metadataFields.metadataFieldDefinitionsDelete( "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", ); ``` **Parameters** `accountId`: `Frameio.Uuid` — `fieldDefinitionId`: `Frameio.Uuid` — `requestOptions`: `MetadataFields.RequestOptions` #### client.metadataFields.metadataFieldDefinitionsUpdate(accountId, fieldDefinitionId, \{ ...params }) -> Frameio.FieldDefinitionResponse Update account level custom field definitions.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`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", }, }, ); ``` **Parameters** `accountId`: `Frameio.Uui`d\` — `fieldDefinitionId`: `Frameio.Uuid` — `request`: `Frameio.UpdateFieldDefinitionParams` requestOptions: MetadataFields.RequestOptions #### client.metadataFields.metadataFieldDefinitionsIndex(accountId, \{ ...params }) -> Frameio.FieldDefinitionsWithIncludesResponse List account level field definitions.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.metadataFields.metadataFieldDefinitionsIndex("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "creator", sort: "name_asc", after: "", page_size: 10, include_total_count: false, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `request`: `Frameio.MetadataFieldDefinitionsIndexRequest` `requestOptions`: `MetadataFields.RequestOptions` #### client.metadataFields.metadataFieldDefinitionsCreate(accountId, \{ ...params }) -> Frameio.FieldDefinitionResponse Create account level field definitions.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`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", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `request`: `Frameio.CreateFieldDefinitionParams` `requestOptions`: `MetadataFields.RequestOptions` #### Project Permissions #### client.projectPermissions.index(accountId, projectId, \{ ...params }) -> core.Page\ List user roles for a given project.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage const response = await client.projectPermissions.index( "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include_deactivated: true, sort: "role_asc", after: "", 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, sort: "role_asc", after: "", page_size: 10, include_total_count: false, }, ); while (page.hasNextPage()) { page = page.getNextPage(); } ``` **Parameters** `accountId`: `Frameio.Uuid` — `projectId`: `Frameio.Uuid` — `request`: `Frameio.ProjectPermissionsIndexRequest` `requestOptions`: `ProjectPermissions.RequestOptions` #### client.projectPermissions.delete(accountId, projectId, userId) -> void Remove a user from a given project.\ Rate Limits: 60 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.projectPermissions.delete( "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", ); ``` **Parameters** `accountId`: `Frameio.Uui`d\` — `projectId`: `Frameio.Uuid` — `userId`: `Frameio.Uuid` — `requestOptions`: `ProjectPermissions.RequestOptions` #### client.projectPermissions.projectUserRolesUpdate(accountId, projectId, userId, \{ ...params }) -> Frameio.UpdateUserRolesResponse Update user roles for the given project if the user is already added to the project. If the user is not added to the project, the user will be added with the given role.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`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", }, }, ); ``` **Parameters** `accountId`: `Frameio.Uuid` — `projectId`: `Frameio.Uuid` — `UserId`: `Frameio.Uuid` — `request`: `Frameio.UpdateUserRolesParams` `requestOptions`: `ProjectPermissions.RequestOptions` #### Projects #### client.projects.show(accountId, projectId, \{ ...params }) -> Frameio.ProjectWithIncludesResponse Show project details.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.projects.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "owner", }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `projectId`: `Frameio.Uuid` — `request`: `Frameio.ProjectsShowRequest` `requestOptions`: `Projects.RequestOptions` #### client.projects.delete(accountId, projectId) -> void Delete a project.\ Rate Limits: 60 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.projects.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b"); ``` **Parameters** `accountId`: `Frameio.Uui`d\` — `projectId`: `Frameio.Uuid` — `requestOptions`: `Projects.RequestOptions` #### client.projects.update(accountId, projectId, \{ ...params }) -> Frameio.ProjectResponse Update project details.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`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", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `projectId`: `Frameio.Uuid` — `request`: `Frameio.ProjectUpdateParams` `requestOptions`: `Projects.RequestOptions` #### client.projects.index(accountId, workspaceId, \{ ...params }) -> core.Page\ List projects in a given workspace.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage const response = await client.projects.index( "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "owner", sort: "name_asc", after: "", 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", sort: "name_asc", after: "", page_size: 10, include_total_count: false, }); while (page.hasNextPage()) { page = page.getNextPage(); } ``` **Parameters** `accountId`: `Frameio.Uuid` — `workspaceId`: `Frameio.Uuid` — `request`: `Frameio.ProjectsIndexRequest` `requestOptions`: `Projects.RequestOptions` #### client.projects.create(accountId, workspaceId, \{ ...params }) -> Frameio.ProjectResponse Create project in a given workspace.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.projects.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { data: { name: "Project Name", restricted: true, }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `workspaceId`: `Frameio.Uuid` — `request`: `Frameio.ProjectsParams` `requestOptions`: `Projects.RequestOptions` #### client.projects.accountProjectsIndex(accountId, \{ ...params }) -> Frameio.ProjectsWithIncludesResponse List all projects the authenticated user has access to within the specified account.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.projects.accountProjectsIndex("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "owner", sort: "name_asc", after: "", page_size: 10, include_total_count: false, }); ``` **Parameters** `accountId`: `Frameio.FrameOrAdobeId` — `request`: `Frameio.AccountProjectsIndexRequest` `requestOptions`: `Projects.RequestOptions` #### client.projects.invitedProjectsIndex(accountId, \{ ...params }) -> Frameio.ProjectsWithIncludesResponse List projects that the current user has been invited to within the specified account, but does not have workspace-level access to. These are projects where the user has project-specific collaborator access without broader team/workspace permissions.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.projects.invitedProjectsIndex("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "owner", sort: "name_asc", after: "", page_size: 10, include_total_count: false, }); ``` **Parameters** `accountId`: `Frameio.FrameOrAdobeId` — `request`: `Frameio.InvitedProjectsIndexRequest` `requestOptions`: `Projects.RequestOptions` #### Search #### client.search.search(accountId, \{ ...params }) -> Frameio.SearchResponse Search across assets, folders, and projects within an account.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`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: "", page_size: 10, include_total_count: false, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `request`: `Frameio.SearchParams` `requestOptions`: `Search.RequestOptions` #### Shares #### client.shares.show(accountId, shareId) -> Frameio.ShareResponse Show a single Share.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.shares.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b"); ``` **Parameters** `accountId`: `Frameio.Uuid` — `shareId`: `Frameio.Uuid` — `requestOptions`: `Shares.RequestOptions` #### client.shares.delete(accountId, shareId) -> void Delete a share.\ Rate Limits: 60 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.shares.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b"); ``` **Parameters** `accountId`: `Frameio.Uuid` — `shareId`: `Frameio.Uuid` — `requestOptions`: `Shares.RequestOptions` #### client.shares.update(accountId, shareId, \{ ...params }) -> Frameio.ShareResponse Update share.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`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(*", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `shareId`: `Frameio.Uuid` — `request`: `Frameio.UpdateShareParams` `requestOptions`: `Shares.RequestOptions` #### client.shares.listReviewers(accountId, shareId, \{ ...params }) -> core.Page\ List share reviewers.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage const response = await client.shares.listReviewers( "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { sort: "name_asc", after: "", 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", { sort: "name_asc", after: "", page_size: 10, include_total_count: false, }, ); while (page.hasNextPage()) { page = page.getNextPage(); } ``` **Parameters** `accountId`: `Frameio.Uuid` — `shareId`: `Frameio.Uuid` — `request`: `Frameio.SharesListReviewersRequestreParams` `requestOptions`: `Shares.RequestOptions` #### client.shares.addReviewers(accountId, shareId, \{ ...params }) -> void Add reviewers to secure share by three identifier types: `adobe_user_id`, `email`, and `user_id`. A request can only include one identifier type parameter. `email` is the only identifier able to add reviewers to a Share who don't have a Frame account member on the account where the Share belongs.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`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"], }, }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `shareId`: `Frameio.Uuid` — `request`: `Frameio.AddReviewersToShareParams` `requestOptions`: `Shares.RequestOptions` #### client.shares.removeReviewers(accountId, shareId, \{ ...params }) -> void Removes reviewers from secure Share by three identifier types: `adobe_user_id`, `email`, and `user_id`. A request can only include one identifier type parameter.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`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"], }, }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `shareId`: `Frameio.Uuid` — `request`: `Frameio.RemoveReviewerParams` `requestOptions`: `Shares.RequestOptions` #### client.shares.removeAsset(accountId, shareId, assetId) -> Frameio.RemoveAssetResponse Remove an asset currently in the share from that share.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.shares.removeAsset( "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", ); ``` **Parameters** `accountId`: `Frameio.Uuid` — `shareId`: `Frameio.Uuid` — `assetId`: `Frameio.Uuid` — `requestOptions`: `Shares.RequestOptions` #### client.shares.addAsset(accountId, shareId, \{ ...params }) -> Frameio.AddAssetResponse Add new asset share.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`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", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `shareId`: `Frameio.Uuid` — `request`: `Frameio.AddAssetParams` `requestOptions`: `Shares.RequestOptions` #### client.shares.index(accountId, projectId, \{ ...params }) -> core.Page\ List shares on a project.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage const response = await client.shares.index( "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { sort: "name_asc", after: "", 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", { sort: "name_asc", after: "", page_size: 10, include_total_count: false, }); while (page.hasNextPage()) { page = page.getNextPage(); } ``` **Parameters** `accountId`: `Frameio.Uuid` — `shareId`: `Frameio.Uuid` — `request`: `Frameio.SharesIndexRequest` `requestOptions`: `Shares.RequestOptions` #### client.shares.create(accountId, projectId, \{ ...params }) -> Frameio.ShareResponse Create share.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`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(*", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `projectId`: `Frameio.Uuid` — `request`: `Frameio.CreateShareParams` `requestOptions`: `Shares.RequestOptions` #### Users #### client.users.show() -> Frameio.ProfileResponse Inspect details of the user associated with the bearer token.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.users.show(); ``` **Parameters** `requestOptions`: `Users.RequestOptions` #### Version Stacks #### client.versionStacks.index(accountId, versionStackId, \{ ...params }) -> Frameio.AssetsWithIncludesResponse List the children (files) in a given version stack.\ Use the include query parameter to selectively include additional properties in the response. > **Note** > > If you include `media_links.original` and the user does not have permission to download files in the corresponding project, then this endpoint will respond with a `403 Forbidden` error. If the content is inaccessible because watermarking is required for this user and isn't supported by the requested media\_links, then the request will succeed but the unsupported media links will be set to null. Similarly, if a requested transcode link does not exist for a particular file (e.g. `including media_links.video_h264_180` on a static image file) or transoding process hasn't finished (i.e. the file's status is "uploaded" rather than "transcoded"), then the a media link will also be set to null in the response payload. In short, the client must handle null media links gracefully. Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.versionStacks.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "media_links", after: "", page_size: 10, include_total_count: false, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `projectId`: `Frameio.Uuid` — `request`: `Frameio.VersionStacksIndexRequest` `requestOptions`: `VersionStacks.RequestOptions` #### client.versionStacks.show(accountId, versionStackId, \{ ...params }) -> Frameio.VersionStackWithIncludesResponse Show version stack details.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.versionStacks.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "media_links", }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `versionStackId`: `Frameio.Uuid` — `request`: `Frameio.VersionStacksShowRequest` `requestOptions`: `VersionStacks.RequestOptions` #### client.versionStacks.copy(accountId, versionStackId, \{ ...params }) -> Frameio.VersionStackCopyResponse Copy version stack.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user Currently, copying version stacks between Adobe storage backed projects is not supported. Copying individual files within a version stack and then restacking them is currently the supported method for copying version stacks for these projects. **`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", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `versionStackId`: `Frameio.Uuid` — `request`: `Frameio.VersionStackCopyParams` `requestOptions`: `VersionStacks.RequestOptions` #### client.versionStacks.list(accountId, folderId, \{ ...params }) -> Frameio.VersionStacksWithIncludesResponse List version stacks in a given folder.\ Rate Limits: 5 calls per 1 second(s) per account\_user **`usage`** ```ts usage await client.versionStacks.list("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "media_links", after: "", page_size: 10, include_total_count: false, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `folderId`: `Frameio.Uuid` — `request`: `Frameio.VersionStacksListRequest` `requestOptions`: `VersionStacks.RequestOptions` #### client.versionStacks.create(accountId, folderId, \{ ...params }) -> Frameio.VersionStackWithIncludesResponse Create a new Version Stack under the parent folder.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`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"], }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `folderId`: `Frameio.Uuid` — `request`: `Frameio.VersionStackCreateParams` `requestOptions`: `VersionStacks.RequestOptions` #### client.versionStacks.move(accountId, versionStackId, \{ ...params }) -> Frameio.VersionStackResponse Move version stack to a folder.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`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", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `folderId`: `Frameio.Uuid` — `request`: `Frameio.VersionStackMoveParams` `requestOptions`: `VersionStacks.RequestOptions` #### Webhooks #### client.webhooks.index(accountId, workspaceId, \{ ...params }) -> core.Page\ List webhooks for the given workspace.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage const response = await client.webhooks.index( "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "creator", after: "", 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: "", page_size: 10, include_total_count: false, }); while (page.hasNextPage()) { page = page.getNextPage(); } ``` **Parameters** `accountId`: `Frameio.Uuid` — `workspaceId`: `Frameio.Uuid` — `request`: `Frameio.WebhooksIndexRequest` `requestOptions`: `Webhooks.RequestOptions` #### client.webhooks.create(accountId, workspaceId, \{ ...params }) -> Frameio.WebhookCreateResponse Creates a single webhook with secret.\ Valid 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`\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`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", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `workspaceId`: `Frameio.Uuid` — `request`: `Frameio.WebhookCreateParams` `requestOptions`: `Webhooks.RequestOptions` #### client.webhooks.show(accountId, webhookId, \{ ...params }) -> Frameio.WebhookWithIncludesResponse Show webhook details.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.webhooks.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "creator", }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `webhookId`: `Frameio.Uuid` — `request`: `Frameio.WebhooksShowRequest` `requestOptions`: `Webhooks.RequestOptions` #### client.webhooks.delete(accountId, webhookId) -> void Delete a webhook.\ Rate Limits: 60 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.webhooks.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b"); ``` **Parameters** `accountId`: `Frameio.Uuid` — `webhookId`: `Frameio.Uuid` — `requestOptions`: `Webhooks.RequestOptions` #### client.webhooks.update(accountId, webhookId, \{ ...params }) -> Frameio.WebhookResponse Update webhook details.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`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", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `webhookId`: `Frameio.Uuid` — ` `request`: `Frameio.WebhookUpdateParams\` `requestOptions`: `Webhooks.RequestOptions` #### Workspace Permissions #### client.workspacePermissions.index(accountId, workspaceId, \{ ...params }) -> core.Page\ List user roles for a given workspace.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage const response = await client.workspacePermissions.index( "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include_deactivated: true, sort: "role_asc", after: "", 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, sort: "role_asc", after: "", page_size: 10, include_total_count: false, }, ); while (page.hasNextPage()) { page = page.getNextPage(); } ``` **Parameters** `accountId`: `Frameio.Uuid` — `workspaceId`: `Frameio.Uuid` — `request`: `Frameio.WorkspacePermissionsIndexRequest` `requestOptions`: `WorkspacePermissions.RequestOptions` #### client.workspacePermissions.workspaceUserRolesDelete(accountId, workspaceId, userId) -> void Remove a user from a given workspace.\ Rate Limits: 60 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.workspacePermissions.workspaceUserRolesDelete( "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", ); ``` **Parameters** `accountId`: `Frameio.Uuid` — `workspaceId`: `Frameio.Uuid` — `userId`: `Frameio.Uuid` — `requestOptions`: `WorkspacePermissions.RequestOptions` #### client.workspacePermissions.workspaceUserRolesUpdate(accountId, workspaceId, userId, \{ ...params }) -> Frameio.UpdateUserRolesResponse Update user roles for the given workspace if the user is already added to the workspace. If the user is not added to the workspace, the user will be added with the given role.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`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", }, }, ); ``` **Parameters** `accountId`: `Frameio.Uuid` — `workspaceId`: `Frameio.Uuid` — `userId`: `Frameio.Uuid` — `request`: `Frameio.UpdateUserRolesParams` `requestOptions`: `WorkspacePermissions.RequestOptions` #### Workspaces #### client.workspaces.show(accountId, workspaceId, \{ ...params }) -> Frameio.WorkspaceWithIncludesResponse Show workspace details.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.workspaces.show("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "creator", }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `workspaceId`: `Frameio.Uuid` — `request`: `Frameio.WorkspacesShowRequest` `requestOptions`: `Workspaces.RequestOptions` #### client.workspaces.delete(accountId, workspaceId) -> void Delete workspace from account.\ Rate Limits: 60 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.workspaces.delete("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b"); ``` **Parameters** `accountId`: `Frameio.Uuid` — `workspaceId`: `Frameio.Uuid` — `requestOptions`: `Workspaces.RequestOptions` #### client.workspaces.update(accountId, workspaceId, \{ ...params }) -> Frameio.WorkspaceResponse Update a workspace.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.workspaces.update("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", "b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { data: { name: "My Workspace", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `workspaceId`: `Frameio.Uuid` — `request`: `Frameio.WorkspaceParams` `requestOptions`: `Workspaces.RequestOptions` #### client.workspaces.index(accountId, \{ ...params }) -> core.Page\ List workspaces for a given account.\ Rate Limits: 100 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage const response = await client.workspaces.index("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { include: "creator", sort: "name_asc", after: "", 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", sort: "name_asc", after: "", page_size: 10, include_total_count: false, }); while (page.hasNextPage()) { page = page.getNextPage(); } ``` **Parameters** `accountId`: `Frameio.Uuid` — `request`: `Frameio.WorkspacesIndexRequest` `requestOptions`: `Workspaces.RequestOptions` #### client.workspaces.create(accountId, \{ ...params }) -> Frameio.WorkspaceResponse Create workspace from an account.\ Rate Limits: 10 calls per 1.00 minute(s) per account\_user **`usage`** ```ts usage await client.workspaces.create("b2702c44-c6da-4bb6-8bbd-be6e547ccf1b", { data: { name: "My Workspace", }, }); ``` **Parameters** `accountId`: `Frameio.Uuid` — `request`: `Frameio.WorkspaceParams` `requestOptions`: `Workspaces.RequestOptions` --- ### npm > **Launch** > > View on [npm](https://www.npmjs.com/package/frameio) ---