A data package doesn’t just install package metadata — it can also create real content the first time it installs, so users get working sample or reference data instead of an empty instance. The data asset is where that content is declared. Only valid on packages with "type": "data".
Property description
data is an array of scopes. One scope covers one space: the space itself, the application whose objects live there, the condition that decides whether its content installs, and the objects placed into it.
A package covering three spaces declares three scopes, one per space, each with its own install condition. One scope can install its objects while another is skipped.
Every scope must name exactly one of space (the package creates the space) or spaceRef (the space already exists). Every scope must also name a dataInstall.targetApplicationKey. Scope keys must be unique regardless of case.
Minimal JSON
{
"space": {
"key": "",
"spacePath": "",
"name": "",
"workflowKey": ""
},
"dataInstall": {
"condition": "",
"targetApplicationKey": ""
},
"objects": []
}{
"assets": {
"data": [
{
"space": {
"key": "sales",
"spacePath": "Sales",
"name": "Sales",
"workflowKey": "core#default"
},
"dataInstall": {
"condition": "targetSpaceApplicationEmpty",
"targetApplicationKey": "core_data_catalog#core_data_catalog_app"
},
"objects": [
{
"key": "customer_db",
"objectTypeKey": "core_data_catalog#database",
"name": "Customer DB"
}
]
},
{
"spaceRef": "Business Glossary",
"dataInstall": {
"condition": "always",
"targetApplicationKey": "core#core_business_glossary_app"
},
"objects": []
}
]
}
}Nested properties
| Property | Description | Values | Mandatory |
|---|---|---|---|
dataInstall | Decides whether this scope’s content installs. See dataInstall. Mandatory on every scope. | nested property | Yes |
objectImages | Images for objects of this scope. | array | No |
objectRelations | Relations between objects of this scope. Relations that cross scopes are declared at assets.objectRelations instead. | array | No |
objects | Array of objects placed into this scope’s space. See Objects. | array | No |
space | The space this scope creates. See Space. Mutually exclusive with spaceRef — declare exactly one. | nested property | No |
spaceRef | Path of an existing space to install objects into, instead of creating one. Must already be bound to dataInstall.targetApplicationKey, otherwise the package fails validation. Mutually exclusive with space. | string | No |
When content installs
Each scope’s condition is checked once — the first time the package installs for real — and the outcome is permanent: every later version of the same package reuses it without re-checking, so a scope that was skipped stays skipped through every upgrade, and a scope that installed its content keeps it.
The package’s overall state rolls the per-scope outcomes up: every scope that installed shows as Data seeded, every scope skipped as Data seeding skipped, and a mix as Data partially seeded. The reason shown for a skipped scope names the target application and how many objects were already there; a scope skipped by targetSpaceApplicationEmpty also names the space.