Functions to find and manipulate content.
Example
var contentLib = require('/lib/xp/content');
Methods
(static) create(params) → {object}
This function creates a content.
The parameter name
is optional, but if it is not set then displayName
must be specified. When name is not set, the
system will auto-generate a name
based on the displayName
, by lower-casing and replacing certain characters. If there
is already a content with the auto-generated name, a suffix will be added to the name
in order to make it unique.
To create a content where the name is not important and there could be multiple instances under the same parent content,
skip the name
parameter and specify a displayName
.
Parameters:
Name | Type | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
params |
object | JSON with the parameters. Properties
|
Returns:
Content created as JSON.
- Type
- object
Examples
// Creates a content.
var result1 = contentLib.create({
name: 'mycontent',
parentPath: '/a/b',
displayName: 'My Content',
branch: 'draft',
contentType: 'test:myContentType',
language: 'es',
data: {
a: 1,
b: 2,
c: ['1', '2'],
d: {
e: {
f: 3.6,
g: true
}
}
},
x: {
"com-enonic-myapplication": {
myschema: {
a: 1
}
}
},
"attachments": {},
"publish": {}
});
log.info('Content created with id ' + result1._id);
// Check if content already exists.
try {
var result2 = contentLib.create({
name: 'mycontent',
parentPath: '/a/b',
displayName: 'My Content',
branch: 'draft',
contentType: 'test:myContentType',
data: {}
});
log.info('Content created with id ' + result2._id);
} catch (e) {
if (e.code == 'contentAlreadyExists') {
log.error('There is already a content with that name');
} else {
log.error('Unexpected error: ' + e.message);
}
}
// Content created.
var expected = {
"_id": "123456",
"_name": "mycontent",
"_path": "/a/b/mycontent",
"creator": "user:system:anonymous",
"createdTime": "1975-01-08T00:00:00Z",
"type": "test:myContentType",
"displayName": "My Content",
"hasChildren": false,
"language": "es",
"valid": false,
"data": {
"a": 1,
"b": 2,
"c": [
"1",
"2"
],
"d": {
"e": {
"f": 3.6,
"g": true
}
}
},
"x": {
"com-enonic-myapplication": {
"myschema": {
"a": 1
}
}
},
"page": {},
"attachments": {},
"publish": {}
};
(static) createMedia(params) → {object}
Creates a media content.
Parameters:
Name | Type | Description | ||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
params |
object | JSON with the parameters. Properties
|
Returns:
Returns the created media content.
- Type
- object
Examples
// Creates a media.
var result = contentLib.createMedia({
name: 'mycontent',
parentPath: '/a/b',
mimeType: 'text/plain',
branch: 'draft',
data: stream
});
// Content created.
var expected = {
"_id": "123456",
"_name": "mycontent",
"_path": "/a/b/mycontent",
"creator": "user:system:anonymous",
"createdTime": "1975-01-08T00:00:00Z",
"type": "base:unstructured",
"hasChildren": false,
"valid": false,
"data": {},
"x": {},
"page": {},
"attachments": {},
"publish": {}
};
(static) delete(params) → {boolean}
This function deletes a content.
Parameters:
Name | Type | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
params |
object | JSON with the parameters. Properties
|
Returns:
True if deleted, false otherwise.
- Type
- boolean
Example
// Deletes a content by path.
var result = contentLib.delete({
key: '/features/js-libraries/mycontent',
branch: 'draft'
});
if (result) {
log.info('Content deleted');
} else {
log.info('Content was not found');
}
(static) get(params) → {object}
This function fetches a content.
Parameters:
Name | Type | Description | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
params |
object | JSON with the parameters. Properties
|
Returns:
The content (as JSON) fetched from the repository.
- Type
- object
Examples
// Gets a single content by path.
var result = contentLib.get({
key: '/path/to/mycontent',
branch: 'draft'
});
if (result) {
log.info('Display Name = ' + result.displayName);
} else {
log.info('Content was not found');
}
// Content as it is returned.
var expected = {
"_id": "123456",
"_name": "mycontent",
"_path": "/path/to/mycontent",
"creator": "user:system:admin",
"modifier": "user:system:admin",
"createdTime": "1970-01-01T00:00:00Z",
"modifiedTime": "1970-01-01T00:00:00Z",
"type": "base:unstructured",
"displayName": "My Content",
"hasChildren": false,
"language": "en",
"valid": true,
"data": {
"myfield": "Hello World"
},
"x": {},
"page": {},
"attachments": {
"logo.png": {
"name": "logo.png",
"label": "small",
"size": 6789,
"mimeType": "image/png"
},
"document.pdf": {
"name": "document.pdf",
"size": 12345,
"mimeType": "application/pdf"
}
},
"publish": {}
};
(static) getAttachments(key) → {object}
This function returns a content attachments.
Parameters:
Name | Type | Description |
---|---|---|
key |
string | Path or id to the content. |
Returns:
An object with all the attachments that belong to the content, where the key is the attachment name. Or null if the content cannot be found.
- Type
- object
Examples
// Gets all attachments for a content.
var result = contentLib.getAttachments('/features/js-libraries/mycontent');
if (!result) {
log.info('Content was not found');
} else {
log.info('Attachments as JSON %s', result);
}
// Attachments returned.
var expected = {
"logo.png": {
"name": "logo.png",
"label": "small",
"size": 6789,
"mimeType": "image/png"
},
"document.pdf": {
"name": "document.pdf",
"size": 12345,
"mimeType": "application/pdf"
}
};
(static) getAttachmentStream(params) → {*}
This function returns a data-stream for the specified content attachment.
Parameters:
Name | Type | Description | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
params |
object | JSON with the parameters. Properties
|
Returns:
Stream of the attachment data.
- Type
- *
Example
// Get stream for attachment.
var stream = contentLib.getAttachmentStream({
key: '/a/b/mycontent',
name: 'document.pdf'
});
(static) getChildren(params) → {boolean}
This function fetches children of a content.
Parameters:
Name | Type | Description | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
params |
object | JSON with the parameters. Properties
|
Returns:
Result (of content) fetched from the repository.
- Type
- boolean
Examples
// Returns the children of specified path.
var result = contentLib.getChildren({
key: '/path/to',
start: 0,
count: 2,
sort: '_modifiedTime ASC',
branch: 'draft'
});
log.info('Found ' + result.total + ' number of contents');
for (var i = 0; i < result.hits.length; i++) {
var content = result.hits[i];
log.info('Content ' + content._name + ' loaded');
}
// Result set returned.
var expected = {
"total": 20,
"count": 2,
"hits": [
{
"_id": "id1",
"_name": "name1",
"_path": "/a/b/name1",
"creator": "user:system:admin",
"modifier": "user:system:admin",
"createdTime": "1970-01-01T00:00:00Z",
"modifiedTime": "1970-01-01T00:00:00Z",
"type": "base:unstructured",
"displayName": "My Content 1",
"hasChildren": false,
"valid": false,
"data": {},
"x": {},
"page": {},
"attachments": {},
"publish": {}
},
{
"_id": "id2",
"_name": "name2",
"_path": "/a/b/name2",
"creator": "user:system:admin",
"modifier": "user:system:admin",
"createdTime": "1970-01-01T00:00:00Z",
"modifiedTime": "1970-01-01T00:00:00Z",
"type": "base:unstructured",
"displayName": "My Content 2",
"hasChildren": false,
"valid": false,
"data": {},
"x": {},
"page": {},
"attachments": {},
"publish": {}
}
]
};
(static) getPermissions(params) → {object}
Gets permissions on a content.
Parameters:
Name | Type | Description | ||||||
---|---|---|---|---|---|---|---|---|
params |
object | JSON parameters. Properties
|
Returns:
Content permissions.
- Type
- object
Examples
// Return permissions for content by path.
var result = contentLib.getPermissions({
key: '/features/js-libraries/mycontent'
});
if (result) {
log.info('Content inherits permissions: ' + result.inheritPermissions);
} else {
log.info('Content not found');
}
// Permissions returned.
var expected = {
"inheritsPermissions": false,
"permissions": [
{
"principal": "user:system:anonymous",
"allow": [
"READ"
],
"deny": []
}
]
};
(static) getSite(params) → {object}
This function returns the parent site of a content.
Parameters:
Name | Type | Description | ||||||
---|---|---|---|---|---|---|---|---|
params |
object | JSON with the parameters. Properties
|
Returns:
The current site as JSON.
- Type
- object
Examples
var result = contentLib.getSite({
key: '/path/to/mycontent'
});
log.info('Site name = %s', result._name);
// Site data returned.
var expected = {
"_id": "100123",
"_name": "my-content",
"_path": "/my-content",
"type": "base:unstructured",
"hasChildren": false,
"valid": false,
"data": {
"siteConfig": {
"applicationKey": "myapplication",
"config": {
"Field": 42
}
}
},
"x": {},
"page": {},
"attachments": {},
"publish": {}
};
(static) getSiteConfig(params) → {object}
This function returns the site configuration for this app in the parent site of a content.
Parameters:
Name | Type | Description | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
params |
object | JSON with the parameters. Properties
|
Returns:
The site configuration for current application as JSON.
- Type
- object
Examples
var result = contentLib.getSiteConfig({
key: '/path/to/mycontent',
applicationKey: app.name
});
log.info('Field value for the site config = %s', result.Field);
// Site config returned.
var expected = {
"Field": 42
};
(static) getType(name) → {ContentType}
Returns the properties and icon of the specified content type.
Parameters:
Name | Type | Description |
---|---|---|
name |
Name of the content type, as 'app:name' (e.g. 'com.enonic.myapp:article'). |
Returns:
The content type object if found, or null otherwise. See ContentType type definition below.
- Type
- ContentType
Examples
// Get a content type by name
var contentType = contentLib.getType('com.enonic.myapp:person');
// Content type returned:
var expected = {
"name": "com.enonic.myapp:person",
"displayName": "Person",
"description": "Person content type",
"superType": "base:structured",
"abstract": false,
"final": true,
"allowChildContent": true,
"contentDisplayNameScript": "$('name')",
"icon": {
"mimeType": "image/png",
"modifiedTime": "2016-01-01T12:00:00Z"
},
"form": [
{
"formItemType": "Input",
"name": "name",
"label": "Full name",
"maximize": true,
"inputType": "TextLine",
"occurrences": {
"maximum": 1,
"minimum": 1
},
"config": {}
},
{
"formItemType": "Input",
"name": "title",
"label": "Photo",
"helpText": "Person photo",
"maximize": true,
"inputType": "ImageSelector",
"occurrences": {
"maximum": 1,
"minimum": 1
},
"config": {}
},
{
"formItemType": "Input",
"name": "bio",
"label": "Bio",
"maximize": true,
"inputType": "HtmlArea",
"occurrences": {
"maximum": 1,
"minimum": 1
},
"config": {}
},
{
"formItemType": "Input",
"name": "birthdate",
"label": "Birth date",
"maximize": true,
"inputType": "Date",
"occurrences": {
"maximum": 1,
"minimum": 0
},
"config": {}
},
{
"formItemType": "Input",
"name": "email",
"label": "Email",
"helpText": "Email address",
"maximize": true,
"inputType": "TextLine",
"occurrences": {
"maximum": 1,
"minimum": 1
},
"config": {
"regexp": [
{
"value": "^[^@]+@[^@]+\\.[^@]+$"
}
]
}
},
{
"formItemType": "Input",
"name": "nationality",
"label": "Nationality",
"maximize": true,
"inputType": "ContentSelector",
"occurrences": {
"maximum": 1,
"minimum": 0
},
"config": {
"allowedContentType": [
{
"value": "com.enonic.myapp:country"
}
]
}
}
]
};
// Get a content type icon
var ct = contentLib.getType('com.enonic.myapp:person');
var icon = ct.icon;
return {
body: icon.data,
contentType: icon.mimeType
};
(static) getTypes() → {Array.<ContentType>}
Returns the list of all the content types currently registered in the system.
Returns:
Array with all the content types found. See ContentType type definition below.
- Type
- Array.<ContentType>
Example
// Gets the list of all content types in the system
var contentTypes = contentLib.getTypes();
log.info(contentTypes.length + ' content types found:');
contentTypes.forEach(function (ct) {
if (ct.superType === 'base:structured') {
log.info(ct.name + ' - ' + ct.displayName);
}
});
(static) modify(params) → {object}
This function modifies a content.
Parameters:
Name | Type | Description | |||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
params |
object | JSON with the parameters. Properties
|
Returns:
Modified content as JSON.
- Type
- object
Examples
// Editor to call for content.
function editor(c) {
c.displayName = 'Modified';
c.language = 'en';
c.data.myCheckbox = false;
c.data["myTime"] = "11:00";
c.publish.from = "2016-11-03T10:01:34Z";
return c;
}
// Modify content by path
var result = contentLib.modify({
key: '/a/b/mycontent',
editor: editor
});
if (result) {
log.info('Content modified. New title is ' + result.displayName);
} else {
log.info('Content not found');
}
// Content modified.
var expected = {
"_id": "123456",
"_name": "mycontent",
"_path": "/path/to/mycontent",
"creator": "user:system:admin",
"modifier": "user:system:admin",
"createdTime": "1970-01-01T00:00:00Z",
"modifiedTime": "1970-01-01T00:00:00Z",
"type": "base:unstructured",
"displayName": "Modified",
"hasChildren": false,
"language": "en",
"valid": true,
"data": {
"myfield": "Hello World",
"myCheckbox": "false",
"myTime": "11:00"
},
"x": {},
"page": {},
"attachments": {
"logo.png": {
"name": "logo.png",
"label": "small",
"size": 6789,
"mimeType": "image/png"
},
"document.pdf": {
"name": "document.pdf",
"size": 12345,
"mimeType": "application/pdf"
}
},
"publish": {
"from": "2016-11-03T10:01:34Z"
}
};
(static) move(params) → {object}
Rename a content or move it to a new path.
Parameters:
Name | Type | Description | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
params |
object | JSON with the parameters. Properties
|
Returns:
The content that was moved or renamed.
- Type
- object
Examples
// Rename content by path. Keeps same parent.
var content1 = contentLib.move({
source: '/my-site/my-content-name',
target: 'new-name'
});
log.info('New path: ' + content1._path); // '/my-site/new-name'
// Move content by path. New parent path, keeps same name.
var content2 = contentLib.move({
source: '/my-site/my-content-name',
target: '/my-site/folder/'
});
log.info('New path: ' + content2._path); // '/my-site/folder/my-content-name'
// Move content by id to new path. New parent path, keeps same name.
var content3 = contentLib.move({
source: '8d933461-ede7-4dd5-80da-cb7de0cd7bba',
target: '/my-site/folder/'
});
log.info('New path: ' + content3._path); // '/my-site/folder/my-content-name'
// Move and rename content.
var content4 = contentLib.move({
source: '/my-site/my-content-name',
target: '/my-site/folder/new-name'
});
log.info('New path: ' + content4._path); // '/my-site/folder/new-name'
// Handle error if target already exists.
try {
var content5 = contentLib.move({
source: '/my-site/my-content-name',
target: '/my-site/folder/existing-content'
});
} catch (e) {
if (e.code == 'contentAlreadyExists') {
log.error('There is already a content in the target specified');
} else {
log.error('Unexpected error: ' + e.message);
}
}
(static) publish(params) → {object}
This function publishes content to a branch.
Parameters:
Name | Type | Description | |||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
params |
object | JSON with the parameters. Properties
|
Returns:
Status of the publish operation in JSON.
- Type
- object
Examples
// Publish content by path or key
var result = contentLib.publish({
keys: ['/mysite/somepage', '79e21db0-5b43-45ce-b58c-6e1c420b22bd'],
sourceBranch: 'draft',
targetBranch: 'master',
schedule: {
from: new Date().toISOString(),
to: '2018-01-01T13:37:00.000Z'
},
includeDependencies: false
});
if (result) {
log.info('Pushed ' + result.pushedContents.length + " content.");
log.info('Deleted ' + result.deletedContents.length + " content.");
log.info('Content that failed operation: ' + result.failedContents.length);
} else {
log.info('Operation failed.');
}
// Content published.
var expected = {
"pushedContents": [
"d7ad428b-eae2-4ff1-9427-e8e8a8a3ab23",
"9f5b0db0-38f9-4e81-b92e-116f25476b1c",
"e1f57280-d672-4cd8-b674-98e26e5b69ae"
],
"deletedContents": [
"45d67001-7f2b-4093-99ae-639be9fdd1f6"
],
"failedContents": [
"79e21db0-5b43-45ce-b58c-6e1c420b22bd"
]
};
(static) query(params) → {boolean}
This command queries content.
Parameters:
Name | Type | Description | |||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
params |
object | JSON with the parameters. Properties
|
Returns:
Result of query.
- Type
- boolean
Examples
// Query content using aggregations.
var result = contentLib.query({
start: 0,
count: 2,
sort: "modifiedTime DESC, geoDistance('data.location', '59.91,10.75')",
query: "data.city = 'Oslo' AND fulltext('data.description', 'garden', 'AND') ",
filters: {
boolean: {
must: {
exists: {
field: "modifiedTime"
}
},
mustNot: {
hasValue: {
field: "myField",
values: [
"cheese",
"fish",
"onion"
]
}
}
},
notExists: {
field: "unwantedField"
},
ids: {
values: ["id1", "id2"]
}
},
branch: "draft",
contentTypes: [
app.name + ":house",
app.name + ":apartment"
],
aggregations: {
floors: {
terms: {
field: "data.number_floor",
order: "_count asc"
},
aggregations: {
prices: {
histogram: {
field: "data.price",
interval: 1000000,
extendedBoundMin: 1000000,
extendedBoundMax: 3000000,
minDocCount: 0,
order: "_key desc"
}
}
}
},
by_month: {
dateHistogram: {
field: "data.publish_date",
interval: "1M",
minDocCount: 0,
format: "MM-yyyy"
}
},
price_ranges: {
range: {
field: "data.price",
ranges: [
{to: 2000000},
{from: 2000000, to: 3000000},
{from: 3000000}
]
}
},
my_date_range: {
dateRange: {
field: "data.publish_date",
format: "MM-yyyy",
ranges: [
{to: "now-10M/M"},
{from: "now-10M/M"}
]
}
},
price_stats: {
stats: {
field: "data.price"
}
}
}
});
log.info('Found ' + result.total + ' number of contents');
for (var i = 0; i < result.hits.length; i++) {
var content = result.hits[i];
log.info('Content ' + content._name + ' found');
}
// Result set returned.
var expected = {
"total": 20,
"count": 2,
"hits": [
{
"_id": "id1",
"_name": "name1",
"_path": "/a/b/name1",
"creator": "user:system:admin",
"modifier": "user:system:admin",
"createdTime": "1970-01-01T00:00:00Z",
"modifiedTime": "1970-01-01T00:00:00Z",
"type": "base:unstructured",
"displayName": "My Content 1",
"hasChildren": false,
"valid": false,
"data": {},
"x": {},
"page": {},
"attachments": {},
"publish": {}
},
{
"_id": "id2",
"_name": "name2",
"_path": "/a/b/name2",
"creator": "user:system:admin",
"modifier": "user:system:admin",
"createdTime": "1970-01-01T00:00:00Z",
"modifiedTime": "1970-01-01T00:00:00Z",
"type": "base:unstructured",
"displayName": "My Content 2",
"hasChildren": false,
"valid": false,
"data": {},
"x": {},
"page": {},
"attachments": {},
"publish": {}
}
],
"aggregations": {
"genders": {
"buckets": [
{
"key": "male",
"docCount": 10
},
{
"key": "female",
"docCount": 12
}
]
},
"by_month": {
"buckets": [
{
"key": "2014-01",
"docCount": 8
},
{
"key": "2014-02",
"docCount": 10
},
{
"key": "2014-03",
"docCount": 12
}
]
},
"price_ranges": {
"buckets": [
{
"key": "a",
"docCount": 2,
"to": 50
},
{
"key": "b",
"docCount": 4,
"from": 50,
"to": 100
},
{
"key": "c",
"docCount": 4,
"from": 100
}
]
},
"my_date_range": {
"buckets": [
{
"docCount": 2,
"from": "2014-09-01T00:00:00Z"
},
{
"docCount": 5,
"from": "2014-10-01T00:00:00Z",
"to": "2014-09-01T00:00:00Z"
},
{
"docCount": 7,
"to": "2014-11-01T00:00:00Z"
}
]
},
"item_count": {
"count": 5,
"min": 1,
"max": 5,
"avg": 3,
"sum": 15
}
}
};
(static) setPermissions(params) → {boolean}
Sets permissions on a content.
Parameters:
Name | Type | Description | ||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
params |
object | JSON parameters. Properties
|
Returns:
True if successful, false otherwise.
- Type
- boolean
Example
// Set permissions for content by path.
var flag = contentLib.setPermissions({
key: '/features/js-libraries/mycontent',
inheritPermissions: false,
overwriteChildPermissions: true,
permissions: [{
principal: 'user:system:anonymous',
allow: ['READ'],
deny: ['DELETE']
}]
});
if (flag) {
log.info('Permissions set');
} else {
log.info('Content not found');
}
(static) unpublish(params) → {Array.<string>}
This function unpublishes content that had been published to the master branch.
Parameters:
Name | Type | Description | ||||||
---|---|---|---|---|---|---|---|---|
params |
object | JSON with the parameters. Properties
|
Returns:
List with ids of the content that were unpublished.
- Type
- Array.<string>
Examples
// Unpublish content by path or key
var result = contentLib.unpublish({
keys: ['/mysite/somepage', '79e21db0-5b43-45ce-b58c-6e1c420b22bd']
});
log.info('Unpublished content ids: ' + result.join(','));
// Content unpublished.
var expected = [
"d7ad428b-eae2-4ff1-9427-e8e8a8a3ab23",
"9f5b0db0-38f9-4e81-b92e-116f25476b1c",
"e1f57280-d672-4cd8-b674-98e26e5b69ae"
];
Type Definitions
ContentType
Type:
- Object
Properties:
Name | Type | Attributes | Description | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
name |
string | Name of the content type. |
|||||||||||||||||
displayName |
string | Display name of the content type. |
|||||||||||||||||
description |
string | Description of the content type. |
|||||||||||||||||
superType |
string | Name of the super type, or null if it has no super type. |
|||||||||||||||||
abstract |
boolean | Whether or not content of this type may be instantiated. |
|||||||||||||||||
final |
boolean | Whether or not it may be used as super type of other content types. |
|||||||||||||||||
allowChildContent |
boolean | Whether or not allow creating child items on content of this type. |
|||||||||||||||||
contentDisplayNameScript |
string | JavaScript code fragment for generating the content name based on values in the content form. |
|||||||||||||||||
icon |
object |
<optional> |
Icon of the content type. Properties
|
||||||||||||||||
form |
Array.<object> | Form schema represented as an array of form items: Input, ItemSet, Layout, OptionSet. |