### Getting Started with Postman Source: https://developer.adobe.com/frameio/guides Instructions on how to configure Postman for interacting with the V4 API, including prerequisites and a link to a prebuilt Postman collection. ```APIDOC ## Start Developing with Postman Postman is a popular tool for testing and interacting with APIs. This section guides you through configuring Postman for the V4 API and provides a prebuilt collection to help you get started. ### Prerequisites 1. **Download Postman**: Ensure you have Postman installed on your system. 2. **Adobe Developer Console Project**: Follow the steps in "Getting Started with the Adobe Developer Console" to create a Frame.io API subscription within an Adobe Developer Console Project. Configure an OAuth Web App Credential for your application. This example assumes the use of an OAuth Web App credential; choose the appropriate credential type for your specific use case. *Refer to the API Reference Guide for more detailed information on performing CRUD operations on Files and Folders.* ``` -------------------------------- ### Versions and Backward-Compatibility Source: https://developer.adobe.com/frameio/guides Details the versioning strategy of the V4 API, its lack of backward-compatibility with older versions, and the use of custom headers for experimental features. ```APIDOC ## Versions and Backward-Compatibility ### Description The Frame.io V4 API is _not_ backward-compatible with earlier versions of Frame.io APIs and, generally, cannot be used to access or update resources contained within legacy accounts as there have been significant changes to the V4 concepts and data model. As such, the URIs associated with the V4 API all include a `/v4` path prefix. However, the V4 API is still evolving quickly and it is possible that new features may occasionally warrant breaking changes. More commonly, Frame.io will release new _additions_ to the API that we consider to be experimental for some period of time, allowing us to receive and respond to customer feedback and usage metrics. Recognizing that backward-compatibility is a major concern for customers managing production-quality integrations with high uptime requirements, we are designing the V4 API to support an additional level of versioning via a custom HTTP header in order to allow clients to opt into using experimental endpoints, avoid breaking changes, and provide backward-compatibility guarantees within the V4 namespace. More details are forthcoming, but for now it is safe to assume that the initial release of the V4 API is considered to be stable and that it will be some time before we contemplate introducing breaking changes. ``` -------------------------------- ### Resource Hierarchy Source: https://developer.adobe.com/frameio/guides An overview of the resource hierarchy in the V4 API, explaining the relationships between Accounts, Workspaces, Projects, Folders, and Files. ```APIDOC ## Resource Hierarchy The V4 API models resources with a hierarchical structure. Understanding this hierarchy is crucial for making API requests. ### Basic Hierarchy: **Account → Workspace → Project → Folder → Folder / Version Stack / File** - **Account**: The fundamental resource associated with an organization, determining subscription plans, content ownership, user roles, and Workspace organization. Most V4 API endpoint URLs include a prefix identifying the Account. - **Workspace**: Used to organize content and users, along with Projects. - **Project**: Organizes content and users. Each Project has a unique root folder. - **Folder**: An unordered container for other storage resources (its `children`). It represents a node in the folder tree. The root folder of a Project contains all its assets. - **Version Stack**: An ordered container of Files. Files within a Version Stack are ordered linearly and assigned a version number. Clients can reorder Files within a Version Stack. - **File**: Represents an uploaded asset. A File is always a child of exactly one Folder or Version Stack. *Note: The V4 API currently supports Version Stacks only when listing Folder contents. Endpoints for creating and updating Version Stacks are planned for future release.* ``` -------------------------------- ### Pagination Source: https://developer.adobe.com/frameio/guides Explains the cursor-based pagination used for potentially large resource listings, including page size control and retrieving subsequent pages. ```APIDOC ## Pagination ### Description Responses that may return a large number of resource objects are paginated to improve request latency. Clients can specify a page size (up to 100) using the `page_size` query parameter; it defaults to 50 if not specified. The V4 API uses cursor-based pagination, providing a `links` property in the response containing a relative link with an `after` query parameter. This parameter holds an opaque cursor string used to retrieve the next page of results. ### Method GET ### Query Parameters - **page_size** (integer) - Optional - The number of elements per page (maximum 100). Defaults to 50. - **after** (string) - Optional - An opaque cursor string obtained from the `links.next` property of a previous response, used to fetch the subsequent page of results. ### Response #### Success Response (200) - **data** (array) - A page of resource objects. - **links** (object) - Contains pagination links. - **next** (string) - A relative URL to the next page of results, including the `after` cursor. - **total_count** (integer) - The total number of resources available. ### Response Example ```json { "data": [ { "created_at": "2024-10-02T00:22:44.887775Z", "creator_id": "8ea72912-d40d-4b88-8d31-3762e055a2aa", "file_size": 102432, "id": "df171f3e-c95f-4454-9071-825cd924b572", "media_type": "application/pdf", "name": "sample.pdf", "parent_id": "e183c7ba-07d9-425a-9467-ebdf0223d9ce", "project": { "created_at": "2024-08-21T17:45:41.881596Z", "description": "For demonstration purposes", "id": "976dd413-a92b-4af6-b465-98aded0174a8", "name": "Demo Project", "owner_id": "8ea72912-d40d-4b88-8d31-3762e055a2aa", "root_folder_id": "e183c7ba-07d9-425a-9467-ebdf0223d9ce", "storage": 20881946, "updated_at": "2024-10-02T00:22:47.168489Z", "workspace_id": "378fcbf7-6f88-4224-8139-6a743ed940b2" }, "project_id": "976dd413-a92b-4af6-b465-98aded0174a8", "status": "created", "type": "file", "updated_at": "2024-10-02T00:22:44.927993Z" } ], "links": { "next": "/v4/accounts/6f70f1bd-7e89-4a7e-b4d3-7e576585a181/folders/e183c7ba-07d9-425a-9467-ebdf0223d9ce/children?after=g3QAAAACZAAGb2Zmc2V0YQVkAAR0eXBlZAANb2Zmc2V0X2N1cnNvcg%3D%3D" }, "total_count": 21 } ``` ``` -------------------------------- ### Authentication and Authorization Source: https://developer.adobe.com/frameio/guides Explains the authentication process using OAuth 2.0 and Adobe Identity Management Server (IMS), and how access tokens are used. ```APIDOC ## Authentication and Authorization ### Description The V4 API relies on OAuth 2.0 and Adobe Identity Management Server (IMS) to authenticate a user (AuthN) and generate access tokens on behalf of that user. An access token must be provided with each API request via the HTTP Authorization header (i.e. Bearer token authentication). > **Note:** Token scopes generated by IMS are static, and that authorization (AuthZ), which determines what the user is allowed to do (and what operations can be performed by the API on behalf of that user), is determined by the roles and permissions granted to the user within Frame.io. See Getting Started with the Developer Console and Authentication Setup (under Start Developing with Postman) sections for more detail about generating and requesting access tokens. ``` -------------------------------- ### List Share Reviewers Query Parameters Source: https://developer.adobe.com/frameio/api/current This example demonstrates how to query for share reviewers. It includes optional parameters like 'after' for pagination using opaque cursors and 'page_size' to control the number of results per page. The 'include_total_count' boolean can be set to true to get the total count of reviewers. ```url get/v4/accounts/{account_id}/shares/{share_id}/reviewers?after=&page_size=10&include_total_count=true ``` -------------------------------- ### List Version Stack Children - Example Request Source: https://developer.adobe.com/frameio/api/experimental This example demonstrates how to make a GET request to the Frame.io API to list children of a specific version stack. It includes path parameters for account and version stack IDs, and query parameters for including related data like creator, project, and media links, as well as sorting and pagination. ```http GET /v4/accounts/bbaf9c5d-3fec-4090-970b-767ee28d210e/version_stacks/5550b0c9-a026-4a8c-bfea-8adcb0cc764e/children?include=creator,project,project.owner,media_links.original&sort=name_asc&page_size=10&api-version=experimental HTTP/1.1 Host: api.frame.io Authorization: Bearer YOUR_ACCESS_TOKEN ``` -------------------------------- ### Show File Details Request (GET) Source: https://developer.adobe.com/frameio/api/experimental This is an example of a GET request to retrieve details for a specific file. It includes account and file IDs in the path and optional 'include' parameters for additional data. ```http GET /v4/accounts/{account_id}/files/{file_id}?include=creator,project,project.owner HTTP/1.1 Host: api.frame.io Authorization: Bearer YOUR_ACCESS_TOKEN Api-Version: experimental ``` -------------------------------- ### Rate Limiting Source: https://developer.adobe.com/frameio/guides Information about the rate limiting policies for the V4 API, including the algorithm used, error responses, and recommended handling strategies. ```APIDOC ## Rate Limiting All V4 API calls are rate-limited. Each API resource and operation has its own configured limit, ranging from 10 requests per minute to 100 requests per second. Limits are currently enforced per account and are subject to change. The V4 API uses a "leaky bucket" algorithm for progressive rate limiting, where limits refresh gradually within their allotted time window. This means limits do not have a hard cutoff but constantly refresh at a pace relative to the resource's limit and time window. Requests exceeding the rate limit will result in a `429` HTTP error. ### Recommended Strategy for Handling 429 Errors (Exponential Back-off) 1. When receiving a `429`, pause for at least one second before retrying the request. 2. If another `429` is received, exponentially increase (or at least double) the previous wait period until normal function resumes. ### Rate Limit Headers Clients can inspect the following HTTP headers in the response to determine applicable rate limits: | Header | Description | | ------------------- | ----------------------------------------------------------------- | | `x-ratelimit-limit` | The rate limit for this resource path, measured in requests. | | `x-ratelimit-remaining` | The number of requests remaining in the current time window. | | `x-ratelimit-window`| The time window for this resource path's limits, measured in milliseconds (ms). | ``` -------------------------------- ### Webhook Event Payload Example Source: https://developer.adobe.com/frameio/guides/Webhooks An example payload for a 'file.ready' event, illustrating the structure of event data including resource identifiers. ```APIDOC ## Webhook Event Payload Example ### Description This is an example payload for a `file.ready` event. It includes identifiers for the account, project, resource, user, and workspace related to the event. The `resource.id` specifically points to the ID of the newly created asset. ### Request Body Example ```json { "account": { "id": "6f70f1bd-7e89-4a7e-b4d3-7e576585a181" }, "project": { "id": "7e46e495-4444-4555-8649-bee4d391a997" }, "resource": { "id": "d3075547-4e64-45f0-ad12-d075660eddd2", "type": "file" }, "type": "file.ready", "user": { "id": "56556a3f-859f-4b38-b6c6-e8625b5da8a5" }, "workspace": { "id": "378fcbf7-6f88-4224-8139-6a743ed940b2" } } ``` ### Notes - The payload provides resource identifiers (`workspace`, `project`, `user`) that can be used for filtering events without additional API calls. - Frame.io does not include additional information about the subscribed resource beyond its ID in the webhook payload. For more details, an API call may be necessary. ``` -------------------------------- ### Get Version Stack Details - Example Response (200 OK) Source: https://developer.adobe.com/frameio/api/experimental This JSON snippet shows a successful response (200 OK) when retrieving version stack details. It includes information about created assets, their metadata, and URLs. This is the expected output for the get/v4/accounts/{account_id}/version_stacks/{version_stack_id} endpoint. ```json { "data": [ { "created_at": "2023-09-25T19:18:29.614189Z", "file_size": 1137444, "id": "2e426fe0-f965-4594-8b2b-b4dff1dc00ec", "media_type": "image/png", "name": "asset.png", "parent_id": "ca06cddf-4aab-4e73-a45a-d0415fc0ae5e", "project_id": "de8a741a-2003-4d83-93c2-6acabdc94ede", "status": "created", "type": "file", "updated_at": "2024-02-07T16:44:41.986478Z", "view_url": "https://next.frame.io/project/d5e6011c-2bc9-4596-be05-77d562627112/view/5a89a9fb-0900-4b23-826b-127b90e4db4c" }, { "created_at": "2023-09-25T19:18:29.614189Z", "file_size": 1137444, "id": "f7337b29-1711-4c4b-b694-b1ce59bef63f", "media_type": "image/png", "name": "asset.png", "parent_id": "ca06cddf-4aab-4e73-a45a-d0415fc0ae5e", "project_id": "de8a741a-2003-4d83-93c2-6acabdc94ede", "status": "created", "type": "file", "updated_at": "2024-02-07T16:44:41.986478Z", "view_url": "https://next.frame.io/project/d5e6011c-2bc9-4596-be05-77d562627112/view/5a89a9fb-0900-4b23-826b-127b90e4db4c" } ] } ``` -------------------------------- ### List Account Level Field Definitions (API Request) Source: https://developer.adobe.com/frameio/api/current This example shows how to request a list of account-level field definitions. It utilizes a GET request to the specified endpoint, allowing for optional query parameters like filters, includes, pagination cursors, page size, and total count. This is essential for retrieving and managing existing custom fields. ```http GET /v4/accounts/{account_id}/metadata/field_definitions HTTP/1.1 Host: api.frame.io Authorization: Bearer YOUR_ACCESS_TOKEN ``` -------------------------------- ### Migration Checklist Source: https://developer.adobe.com/frameio/guides/Migration A step-by-step checklist to guide developers in migrating from the Frame.io Legacy API to the V4 API. ```APIDOC ## Migration Checklist 1. **Audit Legacy API Calls:** Compare your existing Legacy API calls against the V4 API documentation. If an endpoint is not listed, it may not yet exist in V4. 2. **Implement OAuth2.0:** Set up authentication using OAuth2.0 via the Adobe Developer Console. Legacy Frame.io developer tokens and OAuth apps are not compatible with V4. 3. **Refactor Code:** Update your code to use the new V4 API routes and JSON payloads (e.g., use separate file and folder endpoints instead of unified asset endpoints). 4. **Test Thoroughly:** Test your migrated integration with a V4 account, focusing on key functionalities like uploads, comments, and webhooks. 5. **Remove Legacy Code Paths:** Eliminate any code that relies on Legacy API endpoints, as they will cease to function. 6. **Implement Dedicated V4 Login:** Create a separate login method for V4 due to different authentication URLs compared to the Legacy API. ``` -------------------------------- ### Example JSON Response for Version Stack Children Source: https://developer.adobe.com/frameio/api/experimental This is an example of a JSON response when successfully retrieving children of a version stack. It includes details about the asset, its project, parent, and updated timestamps. Note that media links can be null if permissions are insufficient or if the media type is not applicable. ```json { "data": [ { "field_definition_name": "Fields definition name", "field_options": [ { "display_name": "Display name", "id": "fa807b9f-fa11-481d-a9a7-92771069d400" }, { "display_name": "Display name 2", "id": "7d3d8f52-b2db-49aa-89c5-6e83d0481710" } ], "field_type": "select", "mutable": true, "value": [ { "display_name": "Display name", "id": "fa807b9f-fa11-481d-a9a7-92771069d400" } ] } ], "name": "asset.png", "parent_id": "ca06cddf-4aab-4e73-a45a-d0415fc0ae5e", "project": { "created_at": "2024-01-25T19:18:29.614189Z", "description": "Project Description", "id": "b52d5488-499b-4c4f-813f-11f2b61b898b", "name": "My Project", "owner": { "active": true, "avatar_url": "https://assets.frame.io/uploads/cd58cb8e-24b3-4448-8d0f-9532fcd04d11/original.png?response-content-disposition=attachment%3B+filename%3D%22foo.png&Expires=1729857600&Signature=L09h0pi82dCrMYjr9lMHBragByWYh1&Key-Pair-Id=KKI497NESTHMN", "email": "user_email@example.com", "id": "196C1A5666BF4EB00A49411B@176719f5667c82b4494214.e", "name": "Jon Doe" }, "restricted": false, "root_folder_id": "86500acb-be0c-4d4d-b564-ac20a4ca9add", "status": "active", "storage": 15000, "updated_at": "2024-02-07T16:44:41.986478Z", "view_url": "https://next.frame.io/project/d5e6011c-2bc9-4596-be05-77d562627112/", "workspace_id": "6a080fe8-b229-4d30-9fc9-c7d83fe06df5" }, "project_id": "de8a741a-2003-4d83-93c2-6acabdc94ede", "type": "file", "updated_at": "2024-02-07T16:44:41.986478Z", "view_url": "https://next.frame.io/project/d5e6011c-2bc9-4596-be05-77d562627112/view/5a89a9fb-0900-4b23-826b-127b90e4db4c" } ``` -------------------------------- ### Example Error Response Object (JSON) Source: https://developer.adobe.com/frameio/guides This JSON object demonstrates the structure of an error response from the V4 API. The 'errors' property contains an array of error objects, each detailing an issue with 'detail', 'source', and 'title'. ```json { "errors": [ { "detail": "Unexpected field: foo", "source": { "pointer": "/data/foo" }, "title": "Invalid value" } ] } ``` -------------------------------- ### List Version Stack Children with Query Parameters (Example) Source: https://developer.adobe.com/frameio/api/current Demonstrates how to call the API to list children of a version stack, including creator and project details, and specifying a page size. ```shell curl -X GET \ 'https://api.frame.io/v4/accounts/85cbd246-2c80-4b6e-aac6-40818576fd8a/version_stacks/6ecb78b6-4f5c-4496-9633-9d0bbb672c95/children?include=creator,project&page_size=10' \ -H 'Authorization: Bearer YOUR_ACCESS_TOKEN' ``` -------------------------------- ### Get Folder Children with Query Parameters - Frame.io V4 API Source: https://developer.adobe.com/frameio/guides This example demonstrates how to retrieve children of a specific folder using the Frame.io V4 API. It utilizes query parameters for including related resources, setting page size, and including total count. The API follows RESTful principles and uses standard HTTP methods. ```http GET https://api.frame.io/v4/accounts/{account_id}/folders/{folder_id}/children?&include=project&page_size=5&include_total_count=true ``` -------------------------------- ### JSON Request/Response Payload Example Source: https://developer.adobe.com/frameio/guides Illustrates the structure of JSON payloads for creating, updating, or retrieving resources in the Frame.io API. The 'data' property is central, containing the resource object with its attributes. Successful responses also place resources within the 'data' property. ```json { "data": [ { "created_at": "2024-10-02T00:22:44.887775Z", "creator_id": "8ea72912-d40d-4b88-8d31-3762e055a2aa", "file_size": 102432, "id": "df171f3e-c95f-4454-9071-825cd924b572", "media_type": "application/pdf", "name": "sample.pdf", "parent_id": "e183c7ba-07d9-425a-9467-ebdf0223d9ce", "project": { "created_at": "2024-08-21T17:45:41.881596Z", "description": "For demonstration purposes", "id": "976dd413-a92b-4af6-b465-98aded0174a8", "name": "Demo Project", "owner_id": "8ea72912-d40d-4b88-8d31-3762e055a2aa", "root_folder_id": "e183c7ba-07d9-425a-9467-ebdf0223d9ce", "storage": 20881946, "updated_at": "2024-10-02T00:22:47.168489Z", "workspace_id": "378fcbf7-6f88-4224-8139-6a743ed940b2" }, "project_id": "976dd413-a92b-4af6-b465-98aded0174a8", "status": "created", "type": "file", "updated_at": "2024-10-02T00:22:44.927993Z" } ], "links": { "next": "/v4/accounts/6f70f1bd-7e89-4a7e-b4d3-7e576585a181/folders/e183c7ba-07d9-425a-9467-ebdf0223d9ce/children?after=g3QAAAACZAAGb2Zmc2V0YQVkAAR0eXBlZAANb2Zmc2V0X2N1cnNvcg%3D%3D" }, "total_count": 21 } ``` -------------------------------- ### Get Folder Children Source: https://developer.adobe.com/frameio/guides Retrieves a list of children (files, folders) within a specified folder, with options for including related resources and controlling pagination. ```APIDOC ## GET /v4/accounts/{account_id}/folders/{folder_id}/children ### Description Retrieves a list of children (files, folders) within a specified folder. This endpoint supports query parameters for including related resources and controlling pagination. ### Method GET ### Endpoint `/v4/accounts/{account_id}/folders/{folder_id}/children` ### Parameters #### Path Parameters - **account_id** (string) - Required - The ID of the account. - **folder_id** (string) - Required - The ID of the folder whose children are to be retrieved. #### Query Parameters - **include** (string) - Optional - Specifies related resources to include in the response (e.g., `project`). - **page_size** (integer) - Optional - The number of items to return per page. Defaults to 5. - **include_total_count** (boolean) - Optional - If true, the response will include the total count of items. ### Request Example ```json { "example": "GET https://api.frame.io/v4/accounts/{account_id}/folders/{folder_id}/children?include=project&page_size=5&include_total_count=true" } ``` ### Response #### Success Response (200) - **data** (array) - A list of child resources (files, folders). - **[other fields as defined by OpenAPI spec]** #### Response Example ```json { "example": "[Response body will contain an array of file/folder objects and pagination info]" } ``` ``` -------------------------------- ### Example file.ready Event Payload Source: https://developer.adobe.com/frameio/guides/Webhooks This JSON payload represents a 'file.ready' event, indicating a new file is available. It includes identifiers for the account, project, resource, user, and workspace, which can be used for filtering or local caching. ```json { "account": { "id": "6f70f1bd-7e89-4a7e-b4d3-7e576585a181" }, "project": { "id": "7e46e495-4444-4555-8649-bee4d391a997" }, "resource": { "id": "d3075547-4e64-45f0-ad12-d075660eddd2", "type": "file" }, "type": "file.ready", "user": { "id": "56556a3f-859f-4b38-b6c6-e8625b5da8a5" }, "workspace": { "id": "378fcbf7-6f88-4224-8139-6a743ed940b2" } } ``` -------------------------------- ### Common Status Codes Source: https://developer.adobe.com/frameio/guides A list of common HTTP status codes used by the V4 API, with descriptions of their meanings. ```APIDOC ## Common Status Codes ### Description The following table lists common status codes used by the V4 API. | Status Code | **Status** | Description | |---|---|---| | 200 | OK | Request succeeded. | | 201 | Created | Resource was created. | | 204 | No Content | Resource was deleted. No response payload. | | 400 | Bad Request | The request was invalid, often due to a malformed or missing parameter or payload. | | 401 | Unauthorized | The Authorization token is missing or invalid. | | 403 | Forbidden | The Authorization token doesn’t have sufficient permissions for this request. | | 404 | Not Found | The requested resource doesn’t exist. | | 422 | Unprocessable Entity | The request payload and/or parameters are well-formed but are otherwise invalid, preventing execution of the request (largely interchangeable with 400 Bad Request). | | 429 | Too Many Requests | The request has exceeded our API rate limit for this account. See Rate Limiting section of the Getting Started guide for details. | | 5xx | Server Errors | An unexpected error was reported by our server. Clients should be wait a minimum of 30 seconds before retrying the event and any automated retries should be limited and include a randomized interval in addition to employing exponential back-off in successive requests. | **Note:** You may also see a 403 returned if your account is locked. In this scenario, we'll inform you of this via the response description. There are several conditions that could place your account in this state so you can visit this article for more information or reach out to Frame.io support if you need help getting your account back into good standing. ``` -------------------------------- ### Request and Response Payloads Source: https://developer.adobe.com/frameio/guides Details on how request and response payloads are structured as JSON objects and the importance of the `application/json` content type. ```APIDOC ## Request and Response Payloads ### Description Request and response payloads are both composed as JSON objects. For HTTP POST, PUT, or PATCH requests, the `Content-Type` header must be set to `application/json`. When creating or updating resources, the `data` property in the request must contain the resource object, with its attributes nested within. Successful responses that include resources will also provide them within the `data` property. ### Method POST, PUT, PATCH ### Request Body - **data** (object) - Required - Contains the resource object with its attributes. ### Response #### Success Response (200 or other success codes) - **data** (object or array) - Contains the resource object(s) or data. ### Request Example ```json { "data": { "attribute1": "value1", "attribute2": "value2" } } ``` ### Response Example ```json { "data": { "id": "resource-id", "attribute1": "value1", "attribute2": "value2" } } ``` ``` -------------------------------- ### Example JSON Response Structure for Version Stack Children Source: https://developer.adobe.com/frameio/api/current Illustrates the expected JSON structure for a successful response when listing version stack children, including nested project and owner information. ```json { "data": [ { "field_definition_name": "Fields definition name", "field_options": [ { "display_name": "Display name", "id": "fa807b9f-fa11-481d-a9a7-92771069d400" }, { "display_name": "Display name 2", "id": "7d3d8f52-b2db-49aa-89c5-6e83d0481710" } ], "field_type": "select", "mutable": true, "value": [ { "display_name": "Display name", "id": "fa807b9f-fa11-481d-a9a7-92771069d400" } ] } ], "name": "asset.png", "parent_id": "ca06cddf-4aab-4e73-a45a-d0415fc0ae5e", "project": { "created_at": "2024-01-25T19:18:29.614189Z", "description": "Project Description", "id": "b52d5488-499b-4c4f-813f-11f2b61b898b", "name": "My Project", "owner": { "active": true, "avatar_url": "https://assets.frame.io/uploads/cd58cb8e-24b3-4448-8d0f-9532fcd04d11/original.png?response-content-disposition=attachment%3B+filename%3D%22foo.png&Expires=1729857600&Signature=L09h0pi82dCrMYjr9lMHBragByWYh1&Key-Pair-Id=KKI497NESTHMN", "email": "user_email@example.com", "id": "196C1A5666BF4EB00A49411B@176719f5667c82b4494214.e", "name": "Jon Doe" }, "restricted": false, "root_folder_id": "86500acb-be0c-4d4d-b564-ac20a4ca9add", "status": "active", "storage": 15000, "updated_at": "2024-02-07T16:44:41.986478Z", "view_url": "https://next.frame.io/project/d5e6011c-2bc9-4596-be05-77d562627112/", "workspace_id": "6a080fe8-b229-4d30-9fc9-c7d83fe06df5" }, "project_id": "de8a741a-2003-4d83-93c2-6acabdc94ede", "type": "file", "updated_at": "2024-02-07T16:44:41.986478Z", "view_url": "https://next.frame.io/project/d5e6011c-2bc9-4596-be05-77d562627112/view/5a89a9fb-0900-4b23-826b-127b90e4db4c" } ``` -------------------------------- ### Create File Response Sample (JSON) Source: https://developer.adobe.com/frameio/api/current This JSON response confirms the creation of a new file. It includes details like file ID, creation date, and upload URLs if applicable. ```json { "data": { "created_at": "2023-09-25T19:18:29.614189Z", "file_size": 1137444, "id": "f7337b29-1711-4c4b-b694-b1ce59bef63f", "media_type": "image/png", "name": "asset.png", "parent_id": "ca06cddf-4aab-4e73-a45a-d0415fc0ae5e", "project_id": "de8a741a-2003-4d83-93c2-6acabdc94ede", "status": "created", "type": "file", "updated_at": "2024-02-07T16:44:41.986478Z", "upload_urls": [ { "size": 20000000, "url": "https://my.fileupload.url.dev" } ], "view_url": "https://next.frame.io/project/d5e6011c-2bc9-4596-be05-77d562627112/view/5a89a9fb-0900-4b23-826b-127b90e4db4c" } } ``` -------------------------------- ### Create Project Source: https://developer.adobe.com/frameio/api/current Creates a new project within a specified workspace. ```APIDOC ## Create project ### Description Create project in a given workspace. ### Method POST ### Endpoint `/v4/accounts/{account_id}/workspaces/{workspace_id}/projects` ### Parameters #### Path Parameters - **account_id** (string ) - Required - The ID of the account. - **workspace_id** (string ) - Required - The ID of the workspace. #### Request Body - **data** (object) - Required - Project details. - **name** (string) - Required - The name of the project. - **restricted** (boolean) - Optional - Whether the project is restricted. ### Request Example ```json { "data": { "name": "Project Name", "restricted": true } } ``` ### Response #### Success Response (201) - **data** (object) - Details of the created project. - **created_at** (string) - Timestamp of creation. - **id** (string ) - Unique identifier for the project. - **name** (string) - The name of the project. - **restricted** (boolean) - Indicates if the project is restricted. - **root_folder_id** (string ) - The ID of the root folder. - **status** (string) - The status of the project (e.g., "active"). - **storage** (integer) - Storage allocated for the project. - **updated_at** (string) - Timestamp of last update. - **view_url** (string) - URL to view the project. - **workspace_id** (string ) - The ID of the workspace. #### Response Example ```json { "data": { "created_at": "2024-01-25T19:18:29.614189Z", "id": "b52d5488-499b-4c4f-813f-11f2b61b898b", "name": "My Project", "restricted": false, "root_folder_id": "86500acb-be0c-4d4d-b564-ac20a4ca9add", "status": "active", "storage": 15000, "updated_at": "2024-02-07T16:44:41.986478Z", "view_url": "https://next.frame.io/project/d5e6011c-2bc9-4596-be05-77d562627112/", "workspace_id": "6a080fe8-b229-4d30-9fc9-c7d83fe06df5" } } ``` ```