### ftrack.connect.verify-startup Hook Source: https://developer.ftrack.com/integrating-pipelines/connect/customise-connect/hooks/verify_startup/index.html The `ftrack.connect.verify-startup` hook is executed when ftrack connect starts and plugins are loaded. It allows for the detection and reporting of potential user-facing issues related to the current ftrack connect setup. ```APIDOC ## ftrack.connect.verify-startup Hook ### Description This hook is triggered when `ftrack connect` is started and plugins have been loaded. It is designed to inform users about potential problems with the current ftrack connect configuration. ### Method Event-driven (triggered by ftrack connect startup) ### Endpoint N/A (Internal hook) ### Parameters This hook does not accept explicit parameters. It receives an event object. #### Event Object - **topic** (string) - 'ftrack.connect.verify-startup' ### Request Example ```python Event( topic='ftrack.connect.verify-startup' ) ``` ### Response The hook expects to return data that can be either `None` or a string. A string return value is interpreted as a warning message to be displayed to the user. #### Success Response (None or String) - **Return Value** (string or None) - A message detailing any potential issues, or None if no issues are found. #### Response Example ``` 'Message about something that may not work as expected' ``` ### Notes This event is published exclusively through the local event hub of the Python API. ``` -------------------------------- ### Install with Bun Source: https://developer.ftrack.com/api-clients/javascript/installing Use this command to install the @ftrack/api package with Bun. ```bash bun add @ftrack/api ``` -------------------------------- ### Build and install from source Source: https://developer.ftrack.com/api-clients/python/installing/index.html Build and install the package into your current Python site-packages folder after obtaining the source code. ```bash python setup.py install ``` -------------------------------- ### Example Event for ftrack.connect.verify-startup Source: https://developer.ftrack.com/integrating-pipelines/connect/customise-connect/hooks/verify_startup This is an example of the event object passed to the ftrack.connect.verify-startup hook. It contains the topic of the event. ```python Event( topic='ftrack.connect.verify-startup' ) ``` -------------------------------- ### Install ftrack-action-handler from GitHub Repository Source: https://developer.ftrack.com/extending-ftrack/ftrack-action-handler/installing/index.html Install the package directly from its GitHub repository using pip. ```bash pip install git+https://github.com/ftrackhq/ftrack-action-handler.git ``` -------------------------------- ### Create and Start React App Source: https://developer.ftrack.com/extending-ftrack/react_widget Use npx to create a new React application, navigate into its directory, and start the development server. ```bash npx create-react-app my-app cd my-app npm start ``` -------------------------------- ### Build and install ftrack-python from source Source: https://developer.ftrack.com/api-clients/python/installing Build and install the ftrack-python package into your current Python site-packages folder after cloning the source. ```bash python setup.py install ``` -------------------------------- ### Install ftrack-action-handler from PyPI Source: https://developer.ftrack.com/extending-ftrack/ftrack-action-handler/installing/index.html Use this command to install the package directly from the Python Package Index. ```bash pip install ftrack-action-handler ``` -------------------------------- ### Install with yarn Source: https://developer.ftrack.com/api-clients/javascript/installing Use this command to install the @ftrack/api package with yarn. ```bash yarn add @ftrack/api ``` -------------------------------- ### Example Event for ftrack.action.discover Source: https://developer.ftrack.com/integrating-pipelines/connect/customise-connect/hooks/actions This is an example of the event data passed to the `ftrack.action.discover` hook when requesting available actions. ```python Event( topic='ftrack.action.discover', data=dict( selection=[ dict( entityId='eb16970c-5fc6-11e2-bb9a-f23c91df25eb', entityType='task', ) ] ) ) ``` -------------------------------- ### Install with npm Source: https://developer.ftrack.com/api-clients/javascript/installing Use this command to install the @ftrack/api package with npm. ```bash npm install @ftrack/api ``` -------------------------------- ### Install with pnpm Source: https://developer.ftrack.com/api-clients/javascript/installing Use this command to install the @ftrack/api package with pnpm. ```bash pnpm add @ftrack/api ``` -------------------------------- ### Example Local Folder Path Source: https://developer.ftrack.com/custom%20locations/perforce%20location/setup/index.html This is an example of a local folder path for storing Perforce files. Ensure this path is created on your local disk. ```bash C:\Users\$USER\Documents\PerforceWS ``` -------------------------------- ### Example Event for ftrack.action.launch Source: https://developer.ftrack.com/integrating-pipelines/connect/customise-connect/hooks/actions This is an example of the event data passed to the `ftrack.action.launch` hook when a user selects an action from the ftrack interface. ```python Event( topic='ftrack.action.launch', data=dict( actionIdentifier='ftrack-connect-launch-applications-action', applicationIdentifier='maya-2014', foo='bar', selection=[ dict( entityId='eb16970c-5fc6-11e2-bb9a-f23c91df25eb', entityType='task' ) ] ) ) ``` -------------------------------- ### Example Local Folder Path Source: https://developer.ftrack.com/custom%20locations/perforce%20location/setup This is an example of a local folder path to be used for storing Perforce files. Ensure this path is created on your local disk. ```bash C:\Users\$USER\Documents\PerforceWS ``` -------------------------------- ### Install ftrack API and Web Widget Source: https://developer.ftrack.com/extending-ftrack/react_widget Install the necessary ftrack JavaScript API and web widget packages using npm. ```bash npm install --save @ftrack/api npm install --save @ftrack/web-widget ``` -------------------------------- ### Example Event Data for ftrack.connect.application.launch Source: https://developer.ftrack.com/integrating-pipelines/connect/customise-connect/hooks/application_launch/index.html This is an example of the event data structure passed to a hook for the ftrack.connect.application.launch topic. It includes the topic and the launch_data dictionary. ```python Event( topic='ftrack.connect.application.launch', data=launch_data ) ``` -------------------------------- ### Query Server Information Request Body Example Source: https://developer.ftrack.com/api/operations/query-server-information-api-query-server-information-queryserverinformation-post/index.html This is an example of the JSON body structure required to query server information, specifically requesting the 'version'. Ensure the 'action' is set to 'query_server_information'. ```json [ { "action": "query_server_information", "values": [ "version", "string" ], "metadata": {} } ] ``` -------------------------------- ### Install pyOpenSSL for SSL Context Source: https://developer.ftrack.com/api-clients/python/security-and-authentication/index.html Install these packages to enable pyOpenSSL for the requests library, which helps in configuring SSL appropriately and may resolve the InsecurePlatformWarning. ```bash pip install pyopenssl ndg-httpsclient pyasn1 ``` -------------------------------- ### Maya DCC Config Example Source: https://developer.ftrack.com/integrating-pipelines/advanced/framework/dcc-integration/extensions/dcc_config Example of a default DCC config extension for Maya, defining 'publish' and 'open' tools with their respective configurations. ```yaml type: dcc_config name: framework-maya tools: - name: publish label: "PUBLISH" dialog_name: framework_standard_publisher_dialog icon: publish options: tool_configs: - maya-scene-publisher - name: open label: "OPEN" dialog_name: framework_standard_opener_dialog icon: open options: tool_configs: - maya-scene-opener ``` -------------------------------- ### Example API Request (curl) Source: https://developer.ftrack.com/api/operations/configure-totp-api-configure-totp-configuretimedbasedonetimepassword-post/index.html This example demonstrates how to make a curl request to the API to configure TOTP. Ensure you replace placeholders with your actual API key and user credentials. ```curl curl -L -X POST 'https://developer.ftrack.com/api' \ -H 'Content-Type: application/json' \ --data-raw '[ { "action": "configure_totp", "metadata": {} } ]' ``` -------------------------------- ### Send User Invite Request Body Example Source: https://developer.ftrack.com/api/operations/send-user-invite-api-send-user-invite-senduserinvite-post This is an example of the JSON body required to send a user invite. Ensure the 'action' is set to 'send_user_invite' and provide a valid 'user_id'. ```json [ { "action": "send_user_invite", "user_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "metadata": {} } ] ``` -------------------------------- ### Filter Tasks by Timelog Start Date Source: https://developer.ftrack.com/api/query-language/index.html Query entities based on attributes of entities within a collection relationship. This example returns Tasks with at least one Timelog starting after a specific date. ```sql select id from Task where timelogs.start = "2016-01-01" ``` -------------------------------- ### Build the plugin Source: https://developer.ftrack.com/custom%20locations/perforce%20location/installing Build the plugin from the source code using the setup.py script. The resulting plugin will be in the 'build' folder. ```bash python setup.py build_plugin ``` -------------------------------- ### Get Storage Usage with CURL Source: https://developer.ftrack.com/api/operations/storage-usage-api-storage-usage-storageusage-post Example of how to request storage usage using curl. Ensure to set the correct Content-Type and provide the request body. ```curl curl -L -X POST 'https://developer.ftrack.com/api' \ -H 'Content-Type: application/json' \ --data-raw '[ { "action": "storage_usage", "metadata": {} } ]' ``` -------------------------------- ### Get Parent Info for User Timelogs Source: https://developer.ftrack.com/api-clients/examples/link-attribute An advanced use case demonstrating how to retrieve the 'link' attribute, start time, and duration for all timelogs associated with a specific user. ```python for timelog in session.query( 'select context.link, start, duration from Timelog ' 'where user.username is "john.doe"' ): print(timelog['context']['link'], timelog['start'], timelog['duration']) ``` -------------------------------- ### Nuke Studio Launch Configuration Example Source: https://developer.ftrack.com/integrating-pipelines/connect/customise-connect/application_launcher/index.html This YAML configuration defines how Connect should launch Nuke Studio. It includes details on application identification, context, search paths for executables across different operating systems, and launch arguments. ```yaml type: launcher name: nuke-studio context: - Project identifier: ftrack-connect-launch-nuke-studio applicationIdentifier: nuke-studio_{variant} label: Nuke Studio icon: nuke_studio variant: "{version}" integrations: legacy: - ftrack-nuke-studio search_path: linux: prefix: - "/" - usr - local - Nuke.* expression: - Nuke\d.+ version_expression: Nuke(?P.*)\/.+$ launch_arguments: - "--studio" windows: prefix: - C:\ - Program Files.* expression: - Nuke.* - Nuke\d.+.exe version_expression: "(?P[\d.]+[vabc]+[\dvabc.]*)" launch_arguments: - "--studio" darwin: prefix: - "/" - Applications expression: - Nuke.* - NukeStudio\d[\w.]+.app ``` -------------------------------- ### Get Storage Usage (CURL) Source: https://developer.ftrack.com/api/operations/storage-usage-api-storage-usage-storageusage-post/index.html Example using cURL to POST a request for storage usage. Ensure the 'Content-Type' header is set to 'application/json' and the data is correctly formatted. ```curl curl -L -X POST 'https://developer.ftrack.com/api' \ -H 'Content-Type: application/json' \ --data-raw '[ { "action": "storage_usage", "metadata": {} } ]' ``` -------------------------------- ### ftrack.connect.verify-startup Hook Source: https://developer.ftrack.com/integrating-pipelines/connect/customise-connect/hooks/verify_startup The `ftrack.connect.verify-startup` hook is executed when ftrack connect starts and plugins are loaded. It allows for the detection and reporting of potential configuration problems to the user. ```APIDOC ## ftrack.connect.verify-startup Hook ### Description This hook is triggered when `ftrack connect` is started and plugins have been loaded. It is used to inform users about potential problems with the current ftrack connect configuration. ### Method Event-driven (triggered by ftrack connect startup) ### Endpoint N/A (Local event hub) ### Parameters This hook does not accept explicit parameters. It receives an event object. ### Event Example ```python Event( topic='ftrack.connect.verify-startup' ) ``` ### Return Value - **string** - A message to be displayed to the user as a warning if issues are detected. - **None** - If no issues are detected. ### Return Example ```python 'Message about something that may not work as expected' ``` ### Info This event is only published through the local event hub of the Python API. ``` -------------------------------- ### Initiate CSV Import Delayed Job using cURL Source: https://developer.ftrack.com/api/operations/delayed-job-api-delayed-job-csvimportdelayedjob-post Example of how to start a background CSV import job using a cURL command. Ensure the 'Ftrack-Api-Key' and 'Ftrack-User' headers are correctly set for authentication. ```bash curl -L -X POST 'https://developer.ftrack.com/api' \ -H 'Content-Type: application/json' \ --data-raw '[ { "action": "delayed_job", "job_type": "CSV_IMPORT", "data": {}, "metadata": {} } ]' ``` -------------------------------- ### API Request Example for Delayed Job Source: https://developer.ftrack.com/api/operations/delayed-job-api-delayed-job-exportreviewsessionfeedbackdelayedjob-post This cURL command demonstrates how to send a POST request to the ftrack API to start a delayed job for exporting review session feedback. Ensure you include the necessary headers and the correct JSON payload. ```curl curl -L -X POST 'https://developer.ftrack.com/api' \ -H 'Content-Type: application/json' \ --data-raw '[ { "action": "delayed_job", "job_type": "EXPORT_REVIEW_SESSION_FEEDBACK", "data": { "review_session_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "language": "en" }, "metadata": {} } ]' ``` -------------------------------- ### Python Integration Hook Example Source: https://developer.ftrack.com/integrating-pipelines/connect/customise-connect/application_launcher This Python script serves as an integration hook for ftrack Connect's application launcher. It defines functions to handle application launch and discovery events, setting up environment variables and context for ftrack integration. Ensure the ftrack_api is installed and the script is placed where Connect can discover it. ```python # :coding: utf-8 # :copyright: Copyright (c) 2024 ftrack import os import sys import ftrack_api import logging from functools import partial logger = logging.getLogger('example_integration.discover') def on_application_launch(session, event): '''Handle application launch and add environment to *event*.''' # gather local paths plugin_base_dir = os.path.normpath( os.path.join(os.path.abspath(os.path.dirname(__file__)), '..') ) hook_path = os.path.join(plugin_base_dir, 'resource', 'hook') # Add dependencies to PATH. python_dependencies = os.path.join(plugin_base_dir, 'dependencies') sys.path.append(python_dependencies) # Get the context is running from. entity = event['data']['context']['selection'][0] task = session.get('Context', entity['entityId']) data = { 'integration': { "name": 'ftrack-example-integration', 'version': '0.0.0', 'env': { 'FTRACK_EVENT_PLUGIN_PATH.prepend': hook_path, 'PYTHONPATH.prepend': os.path.pathsep.join( [python_dependencies] ), 'FTRACK_CONTEXTID.set': task['id'], 'FS.set': task['parent']['custom_attributes'].get( 'fstart', '1.0' ), 'FE.set': task['parent']['custom_attributes'].get( 'fend', '100.0' ), }, } } # Return the composed data for this integration. return data def register(session): '''Subscribe to application launch events on *registry*.''' if not isinstance(session, ftrack_api.session.Session): return handle_event = partial(on_application_launch, session) # Filter the application launch and discovery, based on the application # identifier and the version extracted. session.event_hub.subscribe( 'topic=ftrack.connect.application.launch and ' 'data.application.identifier=an_application*' ' and data.application.version >= 2021', handle_event, priority=40, ) session.event_hub.subscribe( 'topic=ftrack.connect.application.discover and ' 'data.application.identifier=an_application*' ' and data.application.version >= 2021', handle_event, priority=40, ) ``` -------------------------------- ### Configure Session with Plugin Paths Source: https://developer.ftrack.com/api-clients/python/understanding-sessions Loads plugins by specifying their paths during session instantiation. Includes basic logging setup. ```python # Set up basic logging import logging logging.basicConfig() plugin_logger = logging.getLogger('com.example.example-plugin') plugin_logger.setLevel(logging.DEBUG) >>> # Configure the API, loading plugins in the specified paths. import ftrack_api plugin_paths = ['/path/to/plugins'] session = ftrack_api.Session(plugin_paths=plugin_paths) ``` -------------------------------- ### Run tests from source Source: https://developer.ftrack.com/api-clients/python/installing/index.html Execute the unit tests for the ftrack-python package using the setup.py script. ```bash python setup.py test ``` -------------------------------- ### Initialize and Scan Registry Source: https://developer.ftrack.com/integrating-pipelines/advanced/framework/architecture/framework-core Instantiate the Registry and scan for extensions in the specified paths. The Registry stores and manages framework extensions. ```python registry_instance = Registry() registry_instance.scan_extensions(paths=framework_extensions_path) ``` -------------------------------- ### Install ftrack-python-api with pip Source: https://developer.ftrack.com/api-clients/python/installing/index.html Use this command to install the ftrack-python-api package using pip. ```bash pip install ftrack-python-api ``` -------------------------------- ### Initialize Client Component Source: https://developer.ftrack.com/integrating-pipelines/advanced/framework/architecture/framework-core Instantiate the Client component with an Event Manager and a Registry. The Client reads tool configurations and runs framework dialogs. ```python client = Client(event_manager, registry=registry_instance) ``` -------------------------------- ### Install ftrack-python-api with pip Source: https://developer.ftrack.com/api-clients/python/installing Use this command to install the ftrack-python-api package using pip. ```bash pip install ftrack-python-api ``` -------------------------------- ### Nuke Studio Launch Configuration Example Source: https://developer.ftrack.com/integrating-pipelines/guides/customise-connect/application_launcher/index.html This YAML configuration defines how ftrack Connect should locate and launch the Nuke Studio application. It specifies application details, search paths for different operating systems, and environment variables. ```yaml type: launch_config name: nuke-studio context: - Project identifier: ftrack-connect-launch-nuke-studio applicationIdentifier: nuke-studio_{variant} label: Nuke Studio icon: nuke_studio variant: "{version}" integrations: legacy: - ftrack-nuke-studio search_path: linux: prefix: - "/" - usr - local - Nuke.* expression: - Nuke\d.+ version_expression: Nuke(?P.*)/.+ launch_arguments: - "--studio" windows: prefix: - "C:\" - "Program Files.*" expression: - Nuke.* - "Nuke\d.+.exe" version_expression: "(?P[\d.]+[vabc]+[\dvabc.]*)" launch_arguments: - "--studio" darwin: prefix: - "/" - Applications expression: - Nuke.* - NukeStudio\d[\w.]+.app environment_variables: FOUNDRY_LICENSE_FILE: /Volumes/nas/licenses/floating/foundry/FLEXlm PYTHONPATH: - "/Volumes/nas/pipeline/dependencies" - "/Volumes/nas/home/sverker/ftrack/dependencies" ``` -------------------------------- ### Build locally from source Source: https://developer.ftrack.com/api-clients/python/installing/index.html Build the package locally for self-management after obtaining the source code. ```bash python setup.py build ``` -------------------------------- ### Verify Plugin Registration Source: https://developer.ftrack.com/api-clients/python/understanding-sessions Example output indicating successful plugin registration. ```text DEBUG:com.example.example-plugin:Plugin registered ``` -------------------------------- ### Grant Project Access with API Key (JSON Example) Source: https://developer.ftrack.com/api/operations/grant-api-key-project-api-grant-api-key-project-grantapikeyproject-post This example demonstrates the structure of the JSON payload required to grant API key access to a specific project. Ensure 'project_id', 'api_key_id', and 'action' are correctly specified. ```json { "detail": [ { "loc": [ "string", 0 ], "msg": "string", "type": "string" } ] } ``` ```json [ { "project_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6", "api_key_id": "string", "action": "grant_api_key_project", "metadata": {} } ] ``` -------------------------------- ### cURL Example Output Source: https://developer.ftrack.com/api/endpoint The expected output when executing the example cURL command for an empty API request. ```bash [] ``` -------------------------------- ### Run tests against ftrack-python source Source: https://developer.ftrack.com/api-clients/python/installing Execute the unit tests for ftrack-python using the setup.py script. ```bash python setup.py test ``` -------------------------------- ### Example Event for connect-widget Hook Source: https://developer.ftrack.com/integrating-pipelines/guides/customise-connect/hooks/connect_widget/index.html This is an example of the event object passed to the ftrack.connect.plugin.connect-widget hook. It specifies the topic for the event. ```python Event( topic='ftrack.connect.plugin.connect-widget' ) ``` -------------------------------- ### Configure Session with Plugin Paths Source: https://developer.ftrack.com/api-clients/python/understanding-sessions/index.html Sets up basic logging and instantiates a ftrack API session, explicitly loading plugins from a specified path. ```python # Set up basic logging import logging logging.basicConfig() plugin_logger = logging.getLogger('com.example.example-plugin') plugin_logger.setLevel(logging.DEBUG) >>> # Configure the API, loading plugins in the specified paths. import ftrack_api plugin_paths = ['/path/to/plugins'] session = ftrack_api.Session(plugin_paths=plugin_paths) ``` -------------------------------- ### Example Event for Debug Information Hook Source: https://developer.ftrack.com/integrating-pipelines/connect/customise-connect/hooks/plugin_information/index.html This is an example of the event object passed to the ftrack.connect.plugin.debug-information hook when the About window is opened. ```python Event( topic='ftrack.connect.plugin.debug-information' ) ``` -------------------------------- ### Example Path to Framework Core Libraries Source: https://developer.ftrack.com/integrating-pipelines/framework/migrating_to_v2/index.html This path shows the location of the core framework libraries, including engine and plugin components, within the ftrack integrations repository. This is relevant for understanding the new framework's structure and migrating customisations. ```bash integrations/ libs/ ftrack_framework_core/ source/ ftrack_framework_core/ engine/ .. plugin/ .. ``` -------------------------------- ### Plugin Directory Structure Example Source: https://developer.ftrack.com/integrating-pipelines/advanced/develop-connect/developing_plugins Illustrates the basic directory layout for a ftrack Connect plugin, including the main plugin folder and the hook directory. ```text / my_custom_plugin/ hook/ my_action.py ``` -------------------------------- ### Filter Tasks by Timelog Start Time Source: https://developer.ftrack.com/api-clients/python/querying/index.html Query tasks that have at least one timelog starting from the beginning of the current day. ```python import arrow tasks_with_time_logged_today = session.query( 'Task where timelogs.start >= "{0}"'.format(arrow.now().floor('day')) ) ``` -------------------------------- ### Filter Tasks by Timelog Start Time Source: https://developer.ftrack.com/api-clients/python/querying Query tasks that have at least one timelog starting from the beginning of the current day. ```python import arrow tasks_with_time_logged_today = session.query( 'Task where timelogs.start >= "{0}"'.format(arrow.now().floor('day')) ) ``` -------------------------------- ### Configure DCC Startup Tool Source: https://developer.ftrack.com/integrations/guides/startup-plugins/index.html Define a tool to run on DCC startup. Set 'run_on' to 'startup' and 'menu' to false to prevent it from appearing in the ftrack menu. ```yaml # Execute tool config without UI - name: set_up_scene run_on: startup menu: false # True by default options: tool_configs: - maya-setup-scene ``` -------------------------------- ### Build Nuke Integration with Poetry Source: https://developer.ftrack.com/integrating-pipelines/advanced/framework/migrating_to_v2/index.html Plugins are now built using Poetry instead of setuptools. Refer to the README file in the project directory for detailed instructions on building an integration. ```bash integrations/ projects/ framework-nuke/ README.md ``` -------------------------------- ### Example Publisher Dialog Extension Source: https://developer.ftrack.com/integrating-pipelines/advanced/framework/dcc-integration/extensions/dialogs This is an example of a default publisher dialog extension for the ftrack framework. It demonstrates the basic structure and encoding. ```python # :coding: utf-8 ``` -------------------------------- ### cURL Example API Call Source: https://developer.ftrack.com/api/endpoint Example of how to perform an API call using cURL, including necessary headers and data payload. ```bash curl https://ftrack-test.ftrackapp.com/api \ -X POST \ -H "Content-Type: application/json" \ -H "ftrack-user: john" \ -H "ftrack-api-key: cdd5dcbc-d0bd-435c-8f9d-6ed6902cdd9a" \ --data '[]' ``` -------------------------------- ### Example Empty API Request Source: https://developer.ftrack.com/api/endpoint An example of an empty POST request to the API endpoint, typically used for testing or initial connection. ```http POST /api HTTP/1.1 Host: example.ftrackapp.com Content-Type: application/json Accept: application/json ftrack-user: john ftrack-api-key: cdd5dcbc-d0bd-435c-8f9d-6ed6902cdd9a [] ``` -------------------------------- ### Manually Create Note with Labels Source: https://developer.ftrack.com/api-clients/examples/note/index.html Shows how to manually create a note and link it to labels using the `NoteLabelLink` entity. ```python label = session.query( 'NoteLabel where name is "External Note"' ).first() note = session.create('Note', { 'content': 'New note with external category', 'author': user }) session.create('NoteLabelLink', { 'note_id': note['id], 'label_id': label['id'] }) task['notes'].append(note) ``` -------------------------------- ### Install ftrack Python API Source: https://developer.ftrack.com/integrating-pipelines/guides/event_hub Install the ftrack Python API using pip. This is a prerequisite for creating event listeners in a Python environment. ```bash pip install ftrack-python-api ``` -------------------------------- ### Plugin Registration with Arguments Source: https://developer.ftrack.com/api-clients/python/understanding-sessions/index.html Example of a plugin's register function accepting additional keyword arguments during session instantiation. ```python def register(session, reticulate_splines=False): """Register plugin with *session""" ```