# 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:

![](https://1972929262-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2ZRtnNbqSpWk5uCfyE1A%2Fuploads%2Fgit-blob-bd8ceac19f84c397b4cf3b7d5151f8a671fd1fb6%2Fmeta.png?alt=media)

### JSON format for project meta

```json
{
    "classes": [
        {
            "title": "bike",
            "shape": "rectangle",
            "color": "#F6FF00",
            "geometry_config": {},
            "id": 6509759,
            "hotkey": ""
        },
        {
            "title": "car",
            "shape": "polygon",
            "color": "#BE55CE",
            "geometry_config": {},
            "id": 6509764,
            "hotkey": ""            
        },
        {
            "title": "person",
            "shape": "bitmap",
            "color": "#00FF12",
            "geometry_config": {},
            "id": 6509777,
            "hotkey": ""            
        }
    ],
    "tags": [
        {
            "name": "cars_number",
            "color": "#A0A08C",
            "value_type": "any_number",
            "id": 27855,
            "hotkey": "",
            "applicable_type": "all",
            "classes": []            
        },
        {
            "name": "like",
            "color": "#D98F7E",
            "value_type": "none",
            "id": 27856,
            "hotkey": "",
            "applicable_type": "all",
            "classes": []               
        },
        {
            "name": "situated",
            "color": "#855D79",
            "value_type": "oneof_string",
            "values": [
                "inside",
                "outside"
            ],
            "id": 27857,
            "hotkey": "",
            "applicable_type": "all",
            "classes": []               
        },
        {
            "name": "car_color",
            "color": "#ED68A1",
            "value_type": "any_string",
            "id": 27858,
            "hotkey": "",
            "applicable_type": "all",
            "classes": ["car"]
        }
    ],
    "projectType": "images",
    "projectSettings": {
        "multiView": {
            "enabled": true,
            "tagName": "cars_number", 
            "tagId": null, 
            "isSynced": false
        }
    }
}
```

### Fields definitions

* `classes`(string) - list of all possible object classes. Each class has the following fields assigned:
  * `title`(string) - the unique identifier of a class
  * `shape`(string) - class shape, read more [here](https://developer.supervisely.com/getting-started/objects#objects)
  * `color`(string) - hex color code
  * `geometry_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 server
  * `hotkey` (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 [here](https://developer.supervisely.com/getting-started/supervisely-annotation-format/tags)
  * `name`(string) - the unique identifier of a tag
  * `value_type`(string) - one of the possible tag
  * `color`(string) - hex color code
  * `values`(string) \[optional] - initially predefined set of possible values
  * `id` (int) \[optional] - the unique identification value of the tag
  * `hotkey` (string) \[optional] - hotkey for the Labeling Tool to quickly assign tag to object or image
  * `applicable_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 classes
  * `target_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," the `all` option is used for them.
* `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](https://developer.supervisely.com/python-sdk-tutorials/images/multispectral-images#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`.
