Warning! This documentation is outdated. Visit help center for the latest documentation.

Events list

The following are standard ftrack events published by the server. Each heading refers to the ‘topic’ the event is published with. Each entry includes an example of the event (relevant information only).

ftrack.connect

Emitted by the server when it wants to perform an action in Connect (such as launching the publisher):

Event(
    topic='ftrack.connect',
    data=dict(
        action='start',
        plugin='publish',
        entity=dict(
            entityId='eb16970c-5fc6-11e2-bb9a-f23c91df25eb',
            entityType='task',
        )
    )
)

ftrack.dynamic-enumerator

Emitted by server when requesting entries to populate a dynamic enumerator dropdown with:

Event(
    topic='ftrack.dynamic-enumerator',
    data=dict(
        attributeName='my_dynamic_enumerator',
        recordData=dict(
            entity=dict(
                entityType='task',
                entityId='eb16970c-5fc6-11e2-bb9a-f23c91df25eb'
            ),
            changes=dict()
        ),
        query='',
        sorters=[],
        groupers=[],
        filters=[
            # Filter information.
            ...
        ]
    )
)

Expects reply data in the form:

[
    dict(
        name='Menu item name',
        value='menu_item_value'
    ),
    ...
]

ftrack.action.discover

Published by the server when it wants to get available actions:

Event(
    topic='ftrack.action.discover',
    data=dict(
        context=dict(
            selection=[
                dict(
                    entityId='eb16970c-5fc6-11e2-bb9a-f23c91df25eb',
                    entityType='task',
                )
            ]
        )
    )
)

Expects reply data in the form:

dict(
    items=[
        dict(
            label='Mega Modeling',
            icon='http://mega-modeling.example.com/logo.png',
            variant='2014',
            description='Launch Mega Modeling 2014',
            actionIdentifier='my-action-callback-identifier',
            actionData=dict(
                applicationIdentifier='mega_modeling_2014'
            )
        ),
        dict(
            label='Mega Modeling',
            variant='2015',
            description='Launch Mega Modeling 2015',
            actionIdentifier='my-action-callback-identifier',
            actionData=dict(
                applicationIdentifier='mega_modeling_2015'
            )
        ),
        dict(
            label='Professional Painter',
            actionIdentifier='my-action-callback-identifier',
            actionData=dict(
                applicationIdentifier='professional_painter'
            )
        ),
        dict(
            label='Cool Compositor v2',
            actionIdentifier='my-action-callback-identifier',
            actionData=dict(
                cc_plugins=['foo', 'bar'],
                applicationIdentifier='cc_v2'
            )
        )
    ]
)

ftrack.action.launch

Published by the server when it wants to launch an action:

Event(
    topic='ftrack.action.launch',
    data=dict(
        actionIdentifier='my-action-callback-identifier',
        actionData=dict(
            applicationIdentifier='maya-2014'
        ),
        context=dict(
            selection=[
                dict(
                    entityId='eb16970c-5fc6-11e2-bb9a-f23c91df25eb',
                    entityType='task',
                )
            ]
        )
    )
)

Expects reply data in the form:

dict(
    success=True,
    message='maya-2014 launched successfully.'
)

ftrack.action.trigger-user-interface

Can be published to trigger a response to a launched action remotely:

Event(
    topic='ftrack.action.trigger-user-interface',
    data=dict(
        type='message',
        success=True,
        message='A message to the user.'
    ),
    target='applicationId=ftrack.client.web and user.id="SOME-USER-ID"'
)

Different user interfaces require different data. Here is a list of attributes that may be required:

  • actionIdentifier - Required by form type to know what action to launch on submit.
  • selection - Required by form and widget types to know what entities to work with.

Have a look at action user interfaces for a list of possible user interfaces.

Note

This event is currently only supported by the ftrack web UI which is represented applicationId ftrack.client.web.

ftrack.location.component-added

Published by the Python API whenever a component is added to a location:

Event(
    topic='ftrack.location.component-added',
    data=dict(
        componentId='e2dc0524-b576-11d3-9612-080027331d74',
        locationId='07b82a97-8cf9-11e3-9383-20c9d081909b'
    )
)

ftrack.location.component-removed

Published by the Python API whenever a component is removed from a location:

Event(
    topic='ftrack.location.component-removed',
    data=dict(
        componentId='e2dc0524-b576-11d3-9612-080027331d74',
        locationId='07b82a97-8cf9-11e3-9383-20c9d081909b'
    )
)

ftrack.location.request-resolve

Published by the server when it needs to resolve a path for a component in a specific location, such as when a location is selected in the components widget:

Event(
    topic='ftrack.location.request-resolve',
    data=dict(
        locationName='london',
        componentId='zb26970c-5dc6-1132-119a-f23c9fs325eq',
        platform='Linux',
        serverUrl='http://URL-TO-SERVER:PORT'
    )
)

Expects reply data in the form:

dict(
    path='/fully/resolved/path'
)

ftrack.update

Update events are published when an entity in the system changes:

Event(
    topic='ftrack.update',
    data=dict(
        entities=[
            dict(
                action='update',
                entityId='eb16970c-5fc6-11e2-bb9a-f23c91df25eb',
                entityType='task',
                keys=['statusid'],
                parents=[
                    dict(
                        entityId='5671dcb0-66de-11e1-8e6e-f23c91df25eb',
                        entityType='show'
                    )
                ]
            )
        ]
    )
)

Change information

Update events can also include additional information on what changed. This can be accessed via the ‘changes’ key on each entity in the event:

 Event(
     ...,
     data=dict(
         entities=[
             dict(
                 entityId='eb16970c-5fc6-11e2-bb9a-f23c91df25eb',
                 entityType='task',
                 changes=dict(
                     statusid=dict(
                         old='44ddd0fe-4164-11df-9218-0019bb4983d8',
                         new='44dd9fb2-4164-11df-9218-0019bb4983d8'
                     )
                 ),
                 ...
             )
         ]
     )
 )

ftrack.validate

Published when the server requests validation of user input. Currently used in the create project menu:

Event(
    topic='ftrack.validate',
    data=dict(
        # New project data.
        name='my project',
        fullname='m',
        status='active',
        startdate='2014-08-05T23:00:00.000Z',
        ...
    )
)

Expects reply data in the form:

dict(
    changes=dict(
        name=existingName.upper()
    ),
    errors=dict(
        fullname='Must be more than 3 characters.'
    )
)