# SessionZero Data ## Datapack Datapacks contain multiple Datasets as well as their DatasetObject Template files and other resource files ### Datapack Archive File Structure ```text datapack_name/ ├─ resources/ │ ├─ images/ │ ├─ audio/ ├─ datasets/ │ ├─ dataset_name/ │ │ ├─ objects/ │ │ │ ├─ object_name.szo │ │ ├─ dataset.meta ├─ templates/ │ ├─ template_name.sztl ├─ datapack.meta ├─ README.md ├─ icon.png ``` ### `datapack.meta` file ```json { "name": "SessionZero Core", "id": "sz_core", "uuid": "95c6d3c9-3213-4256-b3db-b004d0fb95b7", "version": "1.0.0", "compatible_systems": "sz_core, d20", "description": "SessionZero Core Datapack" } ``` ## Dataset Metadata (`dataset.meta`) File Definition - The `id` field MUST be unique from other datasets listed withing the containing datapack - `dataset_type` is an arbitrary string that is used to identify what the general "type" of data the dataset contains - `object_template` is the template definition used for creating dataset objects. It must be present in the parent datapack's `templates/` directory ```json { "name": "SessionZero Core Items", "id": "core_items", "icon": "icons/items_icon", "description": "A set of simple items", "dataset_type": "item", "object_template": "core_item" } ``` ## DatasetObject Template File - Metadata fields required for data object templates: - `template_type`: must be `data`. - `id`: denotes the template's id; must be unique within the datapack. - `uuid`: can be left at 0, a uuid will be assigned when uploading to the SessionZeroDB. - `version`: must follow semantic versioning. - `data_type`: is an arbitrary value used to denote what kind of dataset type the template is for. - `compatible_systems`: is arbitrary and only reflects if the template can be used in a datapack according to its own `compatible_systems` value. - `description` - Supported Field Types for `data` template types: - text - textblock - bool - number ```toml [metadata] template_type = "data" id = "core_item" uuid = 0 version = "1.0.0" data_type = "item" compatible_systems = ["sz_core", "d20"] description = """ Core SessionZero item template """ [name] type = "text" [description] type = "textblock" [consumable] type = "bool" default_value = false # -- Stats group -- [stats.value] type = "number" [stats.weight] type = "number" [stats.modifiers.base] type = "number" default_value = 1 ``` ## DatasetObject object (.szo file) An instanced DatasetObject should only contain simple fields and values, no object references or formulas ```json { "id": "some_id", "uuid": "a0eebc99-9c0b-4ef8-bb6d-6bb9bd380a11", "template_id": "core_item", "parent_dataset_id": "core_items", "compatible_systems": ["sz_core", "d20"], "fields": { "name": "Human readable name", "description": "A description", "consumable": false, "stats": { "value": 10, "weight": 2, "modifiers": { "base": 1 } } } } ```