Project Meta: Classes, Tags, Settings
Each project in Supervisely has a set of predetermined classes and tags. This information is called Project Meta and stored in a corresponding JSON-based meta.json file. This file contains all the necessary data from the project's classes and tags. Also, it has information about the project's type and settings:

JSON format for project meta
Fields definitions
classes(string) - list of all possible object classes. Each class has the following fields assigned:title(string) - the unique identifier of a classshape(string) - class shape, read more herecolor(string) - hex color codegeometry_config(dictionary) [optional] - additional settings of the geometry. May be used with keypoints.id(int) [optional] - the unique identification value of the class on the serverhotkey(string) [optional] - hotkey for the Labeling Tool to quickly change active annotation class
tags(string) - list of all possible tags that can be assigned to images or objects. Read more herename(string) - the unique identifier of a tagvalue_type(string) - one of the possible tag value types:none,any_string,any_number,oneof_string,date. Thedatetype stores an ISO 8601 date-time string;possible_valuescannot be used with it.color(string) - hex color codevalues(string) [optional] - initially predefined set of possible valuesid(int) [optional] - the unique identification value of the taghotkey(string) [optional] - hotkey for the Labeling Tool to quickly assign tag to object or imageapplicable_type(string) [optional] - defines the applicability of Tag only to images (imagesOnly), objects (objectsOnly), or both (all). By default, tag can be assigned to both images and objects.classes(list of strings) [optional] - defines the applicability of Tag only to certain classestarget_type(string) [optional] - Defines the scope of application. It can be applied globally for the entire duration or to individual frames, with the following values:entitiesOnly,framesOnly,all. Since images do not have "frames," thealloption is used for them.frame_range_min_length(int) [optional] - minimum length, in frames, of a finished frame-based tag. Length is inclusive, so frames 10 to 12 count as 3.0means no limit. Applies to videos and point cloud episodes.frame_range_max_length(int) [optional] - maximum length, in frames, of a finished frame-based tag, on the same terms asframe_range_min_length. A minimum above a maximum is rejected, since such a tag could never be applied.default(bool) [optional] -truemakes the labeling tools for images, videos and point clouds add the tag automatically to a new object of one of the tag'sclasses, and to an object whose class is changed to one of them. It applies only to a tag withapplicable_typeobjectsOnlyand a non-emptyclasseslist. It is written only whentrue. Available since Supervisely 6.18.3.default_value(string or number) [optional] - the value used when the tag is assigned without one, including when it is added automatically. It applies toany_string,any_numberandoneof_stringtags; foroneof_stringit is one of thevalues. It is written only when set. Available since Supervisely 6.18.3.
When a project meta is updated and a tag in it omits default or default_value, the stored settings are kept. To stop adding the tag automatically, send "default": false; to clear a default value, send "default_value": null.
The Python SDK before version 6.74.46 does not know default and default_value. A meta it reads and writes back loses both: ProjectMeta.from_json and to_json, project download and upload, and import of a project in Supervisely format into a new project. Version 6.74.46 and later keeps them, as TagMeta(is_default=..., default_value=...).
The SDK writes default only when it is true and default_value only when it is set, so api.project.update_meta cannot clear settings stored in an existing project, even when the meta is passed as a dict. Send the meta JSON to the API directly:
* `projectType`(string) - one of the possible project types: `images`, `videos`, `volumes`, `point_clouds`, and `point_cloud_episodes` * `projectSettings`(string) [optional] - additional project properties. For example, multiview settings. Read more [here](../../getting-started/python-sdk-tutorials/images/multispectral-images.md#advanced-use-supervisely-format-for-multispectral-images) * `multiView` - additional properties for the multiview mode * `enabled`(bool) - enable multiview mode * `tagName`(string) (optional) - the name of the tag which will be used as a group tag * `tagId`(int) [optional] - the ID of the tag which will be used as a group tag * `isSynced`(bool) - enable synchronization of views for the multiview mode
Please note, that it is necessary that the group tag in multiView should have the corresponding name or the id in the tags field. Also, the value_type should not be none.
Last updated
Was this helpful?