### Install frameioclient from Source Source: https://github.com/frameio/python-frameio-client/blob/develop/README.md Installation method for local development by cloning the repository. ```bash $ git clone https://github.com/frameio/python-frameio-client $ pip install . ``` -------------------------------- ### Install development dependencies Source: https://github.com/frameio/python-frameio-client/blob/develop/README.md Setup the development environment using pipenv. ```sh pipenv install -e . -pre ``` -------------------------------- ### Install frameioclient via pip Source: https://github.com/frameio/python-frameio-client/blob/develop/docs/installation.rst Use pip to install stable releases of the package. ```sh pip <- or you may download a `.tgz` source ``` -------------------------------- ### Get Project Tree Source: https://context7.com/frameio/python-frameio-client/llms.txt Fetch a complete tree representation of all files and folders within a project. Use `slim=True` to reduce response size. The function prints the tree structure. ```python from frameioclient import FrameioClient import os def get_project_tree(project_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Get full project tree tree = client.projects.tree( project_id="project-123", slim=True # Reduce response size ) def print_tree(items, indent=0): for item in items: prefix = " " * indent print(f"{prefix}- {item['name']} ({item['_type']})") if 'children' in item and item['children']: print_tree(item['children'], indent + 1) print_tree(tree) return tree ``` -------------------------------- ### Manage Review Links with Frame.io Python Client Source: https://context7.com/frameio/python-frameio-client/llms.txt Demonstrates listing, getting, and updating review links and their associated assets. Ensure FRAME_IO_TOKEN is set in your environment variables. ```python from frameioclient import FrameioClient import os def manage_review_links(project_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # List review links for a project links = client.review_links.list(project_id="project-123") # Get a specific review link link = client.review_links.get(link_id="link-123") # Get assets in a review link assets = client.review_links.get_assets(link_id="link-123") # Add assets to a review link client.review_links.update_assets( link_id="link-123", asset_ids=["asset-abc", "asset-def"] ) # Update review link settings client.review_links.update_settings( link_id="link-123", expires_at="2024-12-31T23:59:59+00:00", is_active=True, name="Updated Review Link Name", password="newpassword123" ) return links ``` -------------------------------- ### Get Project Details Source: https://context7.com/frameio/python-frameio-client/llms.txt Retrieve a project by its ID. This includes metadata and root asset information. The function returns the project object. ```python from frameioclient import FrameioClient import os def get_project(project_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Get project details project = client.projects.get(project_id="project-123") print(f"Project: {project['name']}") print(f"Root Asset ID: {project['root_asset_id']}") print(f"Created: {project['inserted_at']}") return project ``` -------------------------------- ### List and Get Teams Source: https://context7.com/frameio/python-frameio-client/llms.txt Retrieves all teams for the authenticated user, teams for a specific account, or details for a single team. ```python from frameioclient import FrameioClient import os def list_teams(): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # List all teams for authenticated user all_teams = client.teams.list_all() for team in all_teams: print(f"Team: {team['name']} (ID: {team['id']})") # List teams for a specific account account_teams = client.teams.list(account_id="account-123") # Get a specific team team = client.teams.get(team_id="team-123") print(f"Team name: {team['name']}") return all_teams ``` -------------------------------- ### Get Audit Logs with Frame.io Python Client Source: https://context7.com/frameio/python-frameio-client/llms.txt Retrieves audit logs for a given account to track user activity and system changes. Requires FRAME_IO_TOKEN environment variable. ```python from frameioclient import FrameioClient import os def get_audit_logs(account_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Get audit logs logs = client.logs.list(account_id="6bdcb4d9-9a2e-a765-4548-ae6b27a6c024") for log in logs: print(f"{log['inserted_at']}: {log['action']} by {log['user']['email']}") return logs ``` -------------------------------- ### Get Updated Assets Helper Function Source: https://context7.com/frameio/python-frameio-client/llms.txt A helper function to retrieve assets that have been added or updated since a specific timestamp. Requires FRAME_IO_TOKEN environment variable. ```python from frameioclient import FrameioClient from datetime import datetime, timezone import os def get_recent_updates(account_id, project_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Get timestamp for 24 hours ago timestamp = (datetime.now(timezone.utc)).isoformat() # Get recently updated assets updated_assets = client.helpers.get_updated_assets( account_id=account_id, project_id=project_id, timestamp="2024-01-01T00:00:00+00:00" ) for asset in updated_assets.get('results', []): print(f"Updated: {asset['name']} at {asset['updated_at']}") return updated_assets ``` -------------------------------- ### Create and upload assets Source: https://github.com/frameio/python-frameio-client/blob/develop/README.md Demonstrates creating assets, creating folders, and uploading files to Frame.io. ```python import os from frameioclient import FrameioClient client = FrameioClient("TOKEN") # Create a new asset manually asset = client.assets.create( parent_asset_id="1234abcd", name="MyVideo.mp4", type="file", filetype="video/mp4", filesize=os.path.getsize("sample.mp4") ) # Create a new folder client.assets.create( parent_asset_id="", name="Folder name", type="folder" # this kwarg is what makes it a folder ) # Upload a file client.assets.upload(destination_id, "video.mp4") ``` -------------------------------- ### Initialize FrameioClient Source: https://context7.com/frameio/python-frameio-client/llms.txt Configure the client using an API token from environment variables or custom settings like thread count and progress tracking. ```python import os from frameioclient import FrameioClient # Initialize with token from environment variable TOKEN = os.getenv("FRAME_IO_TOKEN") client = FrameioClient(TOKEN) # Initialize with custom settings client = FrameioClient( token="fio-u-YOUR_TOKEN_HERE", host="https://api.frame.io", # Default API host threads=8, # Concurrency for uploads/downloads progress=True # Show progress indicators ) # Access the authenticated user me = client.me print(f"Authenticated as: {me['email']}") ``` -------------------------------- ### Create Presentation Link with Frame.io Python Client Source: https://context7.com/frameio/python-frameio-client/llms.txt Shows how to create a presentation link for a specific asset, allowing for a custom viewing experience. Requires FRAME_IO_TOKEN environment variable. ```python from frameioclient import FrameioClient import os def create_presentation(asset_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Create a presentation link presentation = client.presentation_links.create( asset_id="9cee7966-4066-b326-7db1-f9e6f5e929e4", title="Final Cut - Presentation", password="viewerpassword" ) print(f"Presentation URL: {presentation['url']}") return presentation ``` -------------------------------- ### Initialize FrameioClient Source: https://github.com/frameio/python-frameio-client/blob/develop/docs/installation.rst Authenticate the client using a personal access token. ```python from frameioclient import FrameioClient client = FrameioClient(token='my-token') ``` -------------------------------- ### Download files using fioctl Source: https://github.com/frameio/python-frameio-client/blob/develop/README.md CLI command to download a file, project, or folder from Frame.io to a local directory. ```bash fioctl \ --token fio-u-YOUR_TOKEN_HERE \ --destination "YOUR LOCAL SYSTEM DIRECTORY" \ --target "YOUR TARGET FRAME.IO PROJECT OR FOLDER" \ --threads 2 ``` -------------------------------- ### Download Project Source: https://context7.com/frameio/python-frameio-client/llms.txt Download an entire project, including its files and folder structure, to a specified directory. The function prints the time taken for the download. ```python from frameioclient import FrameioClient import os from time import time def download_project(project_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) start_time = time() # Download entire project client.projects.download( project_id="project-123", destination_directory="./downloads/my_project" ) elapsed = round(time() - start_time, 2) project = client.projects.get(project_id) print(f"Downloaded project '{project['name']}' in {elapsed} seconds") ``` -------------------------------- ### Upload files using fioctl Source: https://github.com/frameio/python-frameio-client/blob/develop/README.md CLI command to upload a file or folder to a specified Frame.io destination. ```bash fioctl \ --token fio-u-YOUR_TOKEN_HERE \ --destination "YOUR TARGET FRAME.IO PROJECT OR FOLDER" \ --target "YOUR LOCAL SYSTEM DIRECTORY" \ --threads 8 ``` -------------------------------- ### Search Library Assets with Frame.io Python Client Source: https://context7.com/frameio/python-frameio-client/llms.txt Demonstrates searching for assets within your Frame.io library using basic queries and advanced filters. Requires FRAME_IO_TOKEN environment variable. ```python from frameioclient import FrameioClient import os def search_assets(): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Basic search results = client.search.library( query="Final", account_id="account-123" ) # Search with filters filtered_results = client.search.library( query="interview", account_id="account-123", type="file", # 'file', 'folder', 'review_link', 'presentation' project_id="project-123", team_id="team-123", uploader="John Doe", # First + last name sort="name", page_size=25, page=1 ) for asset in filtered_results.get('results', []): print(f"Found: {asset['name']}") return results ``` -------------------------------- ### Create Team Source: https://context7.com/frameio/python-frameio-client/llms.txt Initializes a new team within a specified account. Requires the team.create scope. ```python from frameioclient import FrameioClient import os def create_team(account_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Create a team (requires team.create scope) team = client.teams.create( account_id="6bdcb4d9-4548-4548-4548-27a6c024ae6b", name="Production Team" ) print(f"Created team: {team['name']}") return team ``` -------------------------------- ### Create Assets Source: https://context7.com/frameio/python-frameio-client/llms.txt Create new file assets or folders within a parent asset. File assets require metadata like filesize and filetype. ```python from frameioclient import FrameioClient import os def create_assets(parent_asset_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Create a file asset (metadata only, upload separately) file_asset = client.assets.create( parent_asset_id="123abc", name="MyVideo.mp4", type="file", filetype="video/mp4", filesize=os.path.getsize("./MyVideo.mp4") ) print(f"Created file asset: {file_asset['id']}") # Create a folder folder_asset = client.assets.create_folder( parent_asset_id="123abc", name="New Footage Folder" ) print(f"Created folder: {folder_asset['id']}") return file_asset, folder_asset ``` -------------------------------- ### List Folder Contents Source: https://context7.com/frameio/python-frameio-client/llms.txt Retrieve children of a folder or project, with options for additional metadata includes or slim responses. ```python from frameioclient import FrameioClient import os def list_folder_contents(folder_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Get children with additional includes children = client.assets.get_children( asset_id=folder_id, includes=['review_links', 'cover_asset', 'creator', 'presentation'] ) for child in children: print(f"- {child['name']} ({child['_type']})") # Get slim response (reduced data for faster requests) slim_children = client.assets.get_children( asset_id=folder_id, slim=True ) return children ``` -------------------------------- ### Create Review Link Source: https://context7.com/frameio/python-frameio-client/llms.txt Generates a shareable review link for a project, optionally protected by a password. ```python from frameioclient import FrameioClient import os def create_review_link(project_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Create a review link review_link = client.review_links.create( project_id="project-123", name="Client Review - Round 1", password="securepassword123" ) print(f"Review Link: {review_link['short_url']}") return review_link ``` -------------------------------- ### Create Asset from URL Source: https://context7.com/frameio/python-frameio-client/llms.txt Imports a file into Frame.io directly from a remote URL, bypassing the need for a local download. ```python from frameioclient import FrameioClient import os def create_from_url(parent_asset_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Create asset from remote URL asset = client.assets.from_url( parent_asset_id="123abc", name="RemoteVideo.mp4", url="https://example.com/video.mp4" ) print(f"Created asset from URL: {asset['id']}") return asset ``` -------------------------------- ### Frame.io Python Client Utils Source: https://github.com/frameio/python-frameio-client/blob/develop/docs/modules/utils.rst This section documents the utility functions provided by the frameioclient.Utils class. It includes all public, private, and inherited members, whether they are documented or not. ```APIDOC ## Utils Class ### Description Provides various utility functions for the Frame.io Python client. ### Members This class includes all public, private, and inherited members. For detailed information on each member, please refer to the source code or the full API documentation. #### Public Methods - **method_name** (parameters) - Description of the public method. #### Private Methods - **_private_method_name** (parameters) - Description of the private method. #### Inherited Methods - **inherited_method_name** (parameters) - Description of the inherited method. ``` -------------------------------- ### Create Project Source: https://context7.com/frameio/python-frameio-client/llms.txt Create a new project under a specific team. The function returns the created project's details, including its ID and root asset ID. ```python from frameioclient import FrameioClient import os def create_project(team_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Create a new project project = client.projects.create( team_id="team-123", name="My Awesome Project" ) print(f"Created project: {project['name']}") print(f"Project ID: {project['id']}") print(f"Root Asset ID: {project['root_asset_id']}") return project ``` -------------------------------- ### Upload Folder Structures Source: https://context7.com/frameio/python-frameio-client/llms.txt Recursively uploads a local directory to Frame.io while maintaining the folder hierarchy. ```python from frameioclient import FrameioClient import os def upload_folder_recursive(source_folder, destination_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Upload entire folder structure client.assets.upload_folder( source_path="./my_project_folder", destination_id=destination_id # Project or folder ID ) print("Folder upload complete!") # CLI alternative for folder upload # fioctl \ # --token fio-u-YOUR_TOKEN_HERE \ # --destination "YOUR TARGET FRAME.IO PROJECT OR FOLDER" \ # --target "YOUR LOCAL SYSTEM DIRECTORY" \ # --threads 8 ``` -------------------------------- ### Add Asset Version Source: https://context7.com/frameio/python-frameio-client/llms.txt Adds a new version to an existing version stack or initializes a new stack for an asset. ```python from frameioclient import FrameioClient import os def add_version(original_asset_id, new_version_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Add new version to version stack result = client.assets.add_version( target_asset_id=original_asset_id, new_version_id=new_version_id ) print(f"Added version to stack") return result ``` -------------------------------- ### Manage Project Collaborators Source: https://context7.com/frameio/python-frameio-client/llms.txt Manage collaborators on a project by listing existing collaborators, pending invitations, adding new users, and removing existing ones. Requires project ID and collaborator email. ```python from frameioclient import FrameioClient import os def manage_collaborators(project_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Get all collaborators collaborators = client.projects.get_collaborators(project_id="project-123") for collab in collaborators: print(f"Collaborator: {collab['email']}") # Get pending invitations pending = client.projects.get_pending_collaborators(project_id="project-123") # Add a collaborator client.projects.add_collaborator( project_id="project-123", email="newuser@example.com" ) # Remove a collaborator client.projects.remove_collaborator( project_id="project-123", email="olduser@example.com" ) return collaborators ``` -------------------------------- ### List Team Projects Source: https://context7.com/frameio/python-frameio-client/llms.txt Fetches all projects associated with a specific team ID. ```python from frameioclient import FrameioClient import os def list_team_projects(team_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Get projects for a team projects = client.teams.list_projects(team_id="team-123") for project in projects: print(f"Project: {project['name']} (ID: {project['id']})") return projects ``` -------------------------------- ### Download Assets Source: https://context7.com/frameio/python-frameio-client/llms.txt Downloads an asset from Frame.io. Supports multi-part downloads for improved performance with large files. ```python from frameioclient import FrameioClient import os def download_asset(asset_id, download_folder): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # First, get the asset details asset = client.assets.get(asset_id) # Download the asset file_path = client.assets.download( asset=asset, download_folder="./downloads", multi_part=True, # Use multi-part for faster downloads replace=False # Don't replace existing files ) print(f"Downloaded to: {file_path}") return file_path # CLI alternative for download # fioctl \ # --token fio-u-YOUR_TOKEN_HERE \ # --destination "YOUR LOCAL SYSTEM DIRECTORY" \ # --target "YOUR TARGET FRAME.IO PROJECT OR FOLDER" \ # --threads 2 ``` -------------------------------- ### List User Accounts Source: https://context7.com/frameio/python-frameio-client/llms.txt Retrieve a list of all accounts accessible to the authenticated user. ```python from frameioclient import FrameioClient import os def list_user_accounts(): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Get all accounts accounts = client.users.get_accounts() for account in accounts: print(f"Account: {account['name']} (ID: {account['id']})") return accounts ``` -------------------------------- ### Copy Assets Source: https://context7.com/frameio/python-frameio-client/llms.txt Copies single or multiple assets to a specified destination folder. Bulk operations support optional comment copying. ```python from frameioclient import FrameioClient import os def copy_assets(): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Copy a single asset copied_asset = client.assets.copy( destination_folder_id="destination-folder-id", target_asset_id="7ee008c5-49a2-f8b5-997d-8b64de153c30" ) # Bulk copy multiple assets with comments client.assets.bulk_copy( destination_folder_id="destination-folder-id", asset_list=[ "7ee008c5-49a2-f8b5-997d-8b64de153c30", "8ff119d6-50b3-g9c6-108e-9b75ef264d41" ], copy_comments=True # Include all comments ) return copied_asset ``` -------------------------------- ### Upload Assets to Frame.io Source: https://context7.com/frameio/python-frameio-client/llms.txt Uploads files to a project or folder. The client automatically handles chunked uploads for large files and supports optional progress tracking. ```python from frameioclient import FrameioClient import os def upload_file(destination_id, file_path): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Simple upload - creates asset and uploads in one step asset = client.assets.upload( destination_id=destination_id, # Project ID or folder ID filepath="./video_to_upload.mov" ) print(f"Uploaded: {asset['name']}") print(f"Asset ID: {asset['id']}") return asset # Upload with progress tracking def upload_with_progress(): client = FrameioClient(os.getenv("FRAME_IO_TOKEN"), progress=True) asset = client.assets.upload( destination_id="project-or-folder-id", filepath="./large_video.mp4" ) return asset ``` -------------------------------- ### Retrieve Asset Details Source: https://context7.com/frameio/python-frameio-client/llms.txt Fetch metadata and status for a specific asset using its unique ID. ```python from frameioclient import FrameioClient import os def get_asset_details(asset_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Get asset by ID asset = client.assets.get(asset_id="1231-12414-afasfaf-aklsajflaksjfla") print(f"Name: {asset['name']}") print(f"Type: {asset['_type']}") # 'file', 'folder', or 'version_stack' print(f"Size: {asset['filesize']} bytes") print(f"MIME Type: {asset['filetype']}") print(f"Created: {asset['inserted_at']}") return asset ``` -------------------------------- ### FrameioHelpers Class Reference Source: https://github.com/frameio/python-frameio-client/blob/develop/docs/modules/helpers.rst Overview of the FrameioHelpers class members and utility functions available in the frameioclient library. ```APIDOC ## FrameioHelpers Class ### Description The FrameioHelpers class contains helper methods designed to facilitate common operations when using the Frame.io Python client. It includes inherited and private members for internal library functionality. ### Class Reference - **Class**: `frameioclient.FrameioHelpers` - **Members**: Includes all public, private, and inherited members defined in the class structure. ### Usage This class is typically instantiated or utilized as part of the broader `frameioclient` package to handle specific helper tasks required for API communication. ``` -------------------------------- ### Retrieve Current User Information Source: https://context7.com/frameio/python-frameio-client/llms.txt Fetch details about the authenticated user, including ID, email, and name. ```python from frameioclient import FrameioClient import os def get_current_user(): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Get current user info me = client.users.get_me() print(f"User ID: {me['id']}") print(f"Email: {me['email']}") print(f"Name: {me['name']}") return me # Example output: # User ID: 6bdcb4d9-4548-4548-4548-27a6c024ae6b # Email: user@example.com # Name: John Doe ``` -------------------------------- ### Retrieve authenticated user information Source: https://github.com/frameio/python-frameio-client/blob/develop/README.md Fetch basic profile information for the user associated with the provided token. ```python from frameioclient import FrameioClient client = FrameioClient("TOKEN") me = client.users.get_me() print(me['id']) ``` -------------------------------- ### FrameioUploader Class Source: https://github.com/frameio/python-frameio-client/blob/develop/docs/modules/uploader.rst The FrameioUploader class provides methods for uploading files to Frame.io. This documentation covers all its members, including private and inherited ones. ```APIDOC ## FrameioUploader Class ### Description Provides methods for uploading files to Frame.io. ### Members This class exposes the following members: - **Public Members**: Methods and attributes intended for direct use. - **Private Members**: Internal methods and attributes, use with caution. - **Inherited Members**: Members inherited from parent classes. ### Usage Instantiate the `FrameioUploader` class and utilize its methods for file upload operations. ```python from frameioclient import FrameioUploader # Example usage (assuming authentication and other setup is done) uploader = FrameioUploader() # Call uploader methods here ``` ``` -------------------------------- ### PresentationLink Class Source: https://github.com/frameio/python-frameio-client/blob/develop/docs/classes/sharing.rst Documentation for the PresentationLink class used to manage presentation links in Frame.io. ```APIDOC ## PresentationLink ### Description Represents a Presentation Link in Frame.io, allowing users to share assets in a presentation format. ### Class Members - **members**: Provides access to the methods and properties defined within the `frameioclient.PresentationLink` class. ``` -------------------------------- ### Manage Team Members Source: https://context7.com/frameio/python-frameio-client/llms.txt Lists current team members, adds new members by email, or removes existing members. ```python from frameioclient import FrameioClient import os def manage_team_members(team_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Get team members members = client.teams.get_members(team_id="team-123") for member in members: print(f"Member: {member['email']}") # Add multiple members by email client.teams.add_members( team_id="team-123", emails=[ "janedoe@frame.io", "johndoe@frame.io" ] ) # Remove members client.teams.remove_members( team_id="team-123", emails=["removeduser@frame.io"] ) return members ``` -------------------------------- ### FrameioDownloader Class Source: https://github.com/frameio/python-frameio-client/blob/develop/docs/modules/downloader.rst The FrameioDownloader class provides methods for downloading assets. The `:members:` directive includes all public methods, `:private-members:` includes private methods, and `:inherited-members:` includes methods inherited from parent classes. `:undoc-members:` ensures that even members without docstrings are included. ```APIDOC ## FrameioDownloader Class ### Description Provides methods for downloading assets from Frame.io. ### Members This class includes all public, private, and inherited members. Undocumented members are also included. ### Usage ```python from frameioclient import FrameioDownloader # Example usage (specific methods would be detailed here if available in source) downloader = FrameioDownloader() ``` ``` -------------------------------- ### Create Comment Source: https://context7.com/frameio/python-frameio-client/llms.txt Create a comment on an asset. Supports simple text comments, timecode-specific comments using frame numbers, and range-based comments with duration in seconds. ```python from frameioclient import FrameioClient import os def create_comment(asset_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Create a simple comment comment = client.comments.create( asset_id="asset-123", text="Great work on this edit!" ) # Create a timecode-specific comment (timestamp in frames) timed_comment = client.comments.create( asset_id="asset-123", text="Consider extending this shot", timestamp=1911 # Frame number ) # Create a range-based comment range_comment = client.comments.create( asset_id="asset-123", text="This entire section needs color grading", timestamp=1911, duration=3.5 # Duration in seconds ) print(f"Comment ID: {comment['id']}") return comment ``` -------------------------------- ### ReviewLink Class Source: https://github.com/frameio/python-frameio-client/blob/develop/docs/classes/sharing.rst Documentation for the ReviewLink class used to manage review links in Frame.io. ```APIDOC ## ReviewLink ### Description Represents a Review Link in Frame.io, allowing users to share assets for feedback and review. ### Class Members - **members**: Provides access to the methods and properties defined within the `frameioclient.ReviewLink` class. ``` -------------------------------- ### Retrieve and List Comments Source: https://context7.com/frameio/python-frameio-client/llms.txt Fetches a specific comment by ID or lists all comments associated with a given asset ID. ```python from frameioclient import FrameioClient import os def get_comments(asset_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Get a specific comment comment = client.comments.get(comment_id="comment-123") print(f"Comment: {comment['text']}") # List all comments on an asset comments = client.comments.list(asset_id="asset-123") for c in comments: timestamp = c.get('timestamp', 'N/A') print(f"[{timestamp}] {c['text']}") return comments ``` -------------------------------- ### Update Asset Metadata Source: https://context7.com/frameio/python-frameio-client/llms.txt Modifies asset properties such as name, description, or custom metadata fields. ```python from frameioclient import FrameioClient import os def update_asset(asset_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Update asset name updated_asset = client.assets.update( asset_id="adeffee123342", name="updated_filename.mp4" ) print(f"Updated asset: {updated_asset['name']}") return updated_asset ``` -------------------------------- ### Delete Asset Source: https://context7.com/frameio/python-frameio-client/llms.txt Permanently delete an asset from Frame.io using its ID. Ensure you have the necessary permissions before execution. ```python from frameioclient import FrameioClient import os def delete_asset(asset_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Delete the asset client.assets.delete(asset_id="asset-to-delete-id") print("Asset deleted successfully") ``` -------------------------------- ### Reply to Comment Source: https://context7.com/frameio/python-frameio-client/llms.txt Adds a new reply to an existing comment thread using the parent comment ID. ```python from frameioclient import FrameioClient import os def reply_to_comment(comment_id): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Reply to a comment reply = client.comments.reply( comment_id="comment-123", text="Thanks for the feedback, I'll make that change!" ) print(f"Reply ID: {reply['id']}") return reply ``` -------------------------------- ### Update and Delete Comments Source: https://context7.com/frameio/python-frameio-client/llms.txt Modifies existing comment text or timestamps, or removes a comment entirely. ```python from frameioclient import FrameioClient import os def manage_comments(): client = FrameioClient(os.getenv("FRAME_IO_TOKEN")) # Update a comment updated = client.comments.update( comment_id="comment-123", text="Updated comment text", timestamp=2000 ) # Delete a comment client.comments.delete(comment_id="comment-123") return updated ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.