.. :copyright: Copyright (c) 2016 ftrack .. _example/entity_links: ****************** Using entity links ****************** A link can be used to represent a dependency or another relation between two entities in ftrack. There are two types of entities that can be linked: * Versions can be linked to other asset versions, where the link entity type is `AssetVersionLink`. * Objects like Task, Shot or Folder, where the link entity type is `TypedContextLink`. Both `AssetVersion` and `TypedContext` objects have the same relations `incoming_links` and `outgoing_links`. To list the incoming links to a Shot we can use the relationship `incoming_links`:: for link in shot['incoming_links']: print(link['from'], link['to']) In the above example `link['to']` is the shot and `link['from']` could be an asset build or something else that is linked to the shot. There is an equivalent `outgoing_links` that can be used to access outgoing links on an object. To create a new link between objects or asset versions create a new `TypedContextLink` or `AssetVersionLink` entity with the from and to properties set. In this example we will link two asset versions:: session.create('AssetVersionLink', { 'from': from_asset_version, 'to': to_asset_version }) session.commit() Using asset version link shortcut ================================= Links on asset version can also be created by the use of the `uses_versions` and `used_in_versions` relations:: rig_version['uses_versions'].append(model_version) session.commit() This has the same result as creating the `AssetVersionLink` entity as in the previous section. Which versions are using the model can be listed with:: for version in model_version['used_in_versions']: print('{0} is using {1}'.format(version, model_version))