Jump to content

How to create new entity types with python api

lukas g

Recommended Posts


My Question is: How can I create new entity types using the python api.

when i create an new session object with the python api using:

session = ftrack_api.Session(server_url=server_url,

I can query all types using:

session_types = session.types

Now i am checking if all entity types our pipeline requires are present in this session using something like:


However if the expected entity types are NOT present -> meaning FTrack is not yet configured in the way the it needs to be for the pipeline.
I want to create the missing entity types using the python api.

In the GUI I would simply create new objects for each missing entity type like this:

And then I would create a schema using the required objects / (entity types)
and make sure that the projects are always using this schema:


But I am having trouble to understand the correct way of doing so using the python api.
As far as I understand the entity types are generated dynamically at the beginning of a session.
The "StandardFactory" class takes care of it by creating the types specified in the existing "ProjectSchema" 's

Workflow like so ?
Create a new ProjectSchema?
While doing so I pass in the new Entity Types I want to have created with this schema?
But how can I define those new entity types?


Some informatison from the docs I collected so far: 
" When a Session is constructed it fetches schema details from the connected server and then calls an Entity factory to create classes from those schemas. It does this by emitting a synchronous event, ftrack.api.session.construct entity-type, for each schema and expecting a class object to be returned. "

Regarding working with Project Schema's I only found these small snippets from the docs which do NOT show how to create a new schema:

The information provided in the "Working with entities - Customising entity types" also links to this page "Understanding sessions  - Configuring plugins" and the provided python file "cunstruct_entity_type.py" shows how to register a plugin but does not show how to actually create a new entity type.


I hope someone can point me to the right direction!

Thank you in advance,

Lukas :)

Link to comment
Share on other sites

Hi Lukas,

Thank you for posting and welcome to the forums!

To manage the object types and the project schemas you have to go through the Web UI today. In future versions of ftrack we will most likely add support for this through the API but due to some underlying complexity of how the schemas are modeled we have currently limited API access on this to read (and locked down update/create operations).

Link to comment
Share on other sites

Hi Mattias,

thank you for the quick reply and the welcoming :)
That's unfortunate to hear not having access through the api for proper entity configuration. 
I can see this not being an easy task to tackle, hiding the underlying complexity from the api users but still giving enough control for flexible configurations.

Do you have any information about when this might be addressed?
(Talking about just a couple of months or more like a year or so?)


Link to comment
Share on other sites


This topic is now archived and is closed to further replies.

  • Create New...