@dotcms/types
Version:
## Overview
1,150 lines (1,149 loc) • 46.8 kB
TypeScript
/**
* Represents a DotCMS page asset that contains all the components and configuration needed to render a page
*
* @interface DotCMSPageAsset
* @property {boolean} [canCreateTemplate] - Whether the current user has permission to create templates
* @property {Object.<string, DotCMSPageAssetContainer>} containers - Map of container identifiers to their container objects
* @property {DotCMSLayout} layout - The layout configuration for this page
* @property {DotCMSPage} page - The page metadata and configuration
* @property {DotCMSSite} site - The site this page belongs to
* @property {DotCMSTemplate} template - The template used to render this page
* @property {DotCMSViewAs} [viewAs] - Optional view configuration for preview/editing modes
* @property {DotCMSVanityUrl} [vanityUrl] - Optional vanity URL configuration for this page
* @property {DotCMSURLContentMap} [urlContentMap] - Optional URL to content mapping configuration
* @property {Record<string, unknown>} [params] - Optional parameters used when requesting the page
*/
export interface DotCMSPageAsset {
canCreateTemplate?: boolean;
containers: {
[key: string]: DotCMSPageAssetContainer;
};
layout: DotCMSLayout;
page: DotCMSPage;
site: DotCMSSite;
template: DotCMSTemplate;
viewAs?: DotCMSViewAs;
vanityUrl?: DotCMSVanityUrl;
urlContentMap?: DotCMSURLContentMap;
params?: Record<string, unknown>;
}
/**
* Represents a URL to content mapping configuration that extends the basic contentlet
*
* @interface DotCMSURLContentMap
* @extends {DotCMSBasicContentlet}
* @property {string} URL_MAP_FOR_CONTENT - The content identifier that this URL maps to
* @property {string} urlMap - The URL pattern/mapping configuration
*/
export interface DotCMSURLContentMap extends DotCMSBasicContentlet {
URL_MAP_FOR_CONTENT: string;
urlMap: string;
}
/**
* Represents a row in a page layout asset
*
* @interface DotPageAssetLayoutRow
* @property {number} identifier - Unique numeric identifier for the row
* @property {string} [value] - Optional value associated with the row
* @property {string} [id] - Optional string identifier for the row
* @property {DotPageAssetLayoutColumn[]} columns - Array of columns contained within this row
* @property {string} [styleClass] - Optional CSS class name(s) to apply to the row
*/
export interface DotPageAssetLayoutRow {
identifier: number;
value?: string;
id?: string;
columns: DotPageAssetLayoutColumn[];
styleClass?: string;
}
/**
* Represents a vanity URL configuration for URL redirection and forwarding
*
* @interface DotCMSVanityUrl
* @property {string} pattern - The URL pattern to match for this vanity URL rule
* @property {string} vanityUrlId - Unique identifier for this vanity URL
* @property {string} url - The actual URL that will be matched
* @property {string} siteId - The ID of the site this vanity URL belongs to
* @property {number} languageId - The language ID this vanity URL applies to
* @property {string} forwardTo - The destination URL to forward/redirect to
* @property {number} response - The HTTP response code to use
* @property {number} order - The priority order of this vanity URL rule
* @property {boolean} temporaryRedirect - Whether this is a temporary (302) redirect
* @property {boolean} permanentRedirect - Whether this is a permanent (301) redirect
* @property {boolean} forward - Whether to forward the request internally
*/
export interface DotCMSVanityUrl {
pattern: string;
vanityUrlId: string;
url: string;
siteId: string;
languageId: number;
forwardTo: string;
response: number;
order: number;
temporaryRedirect: boolean;
permanentRedirect: boolean;
forward: boolean;
}
/**
* Represents a column in a page layout asset
*
* @interface DotPageAssetLayoutColumn
* @property {boolean} preview - Whether the column is in preview mode
* @property {DotCMSColumnContainer[]} containers - Array of containers within this column
* @property {number} widthPercent - Width of the column as a percentage
* @property {number} width - Width of the column in pixels/units
* @property {number} leftOffset - Left offset position of the column
* @property {number} left - Left position of the column
* @property {string} [styleClass] - Optional CSS class name(s) to apply to the column
*/
export interface DotPageAssetLayoutColumn {
preview: boolean;
containers: DotCMSColumnContainer[];
widthPercent: number;
width: number;
leftOffset: number;
left: number;
styleClass?: string;
}
/**
* Represents a container within a column in a page layout
*
* @interface DotCMSColumnContainer
* @property {string} identifier - Unique identifier for the container
* @property {string} uuid - UUID of the current container instance
* @property {string[]} historyUUIDs - Array of historical UUIDs for this container's previous versions
*/
export interface DotCMSColumnContainer {
identifier: string;
uuid: string;
historyUUIDs: string[];
}
/**
* Represents a container asset within a page, including its structure and content
*
* @interface DotCMSPageAssetContainer
* @property {DotCMSContainer} container - The container configuration and metadata
* @property {DotCMSContainerStructure[]} containerStructures - Array of content type structures allowed in this container
* @property {Object.<string, DotCMSBasicContentlet[]>} contentlets - Map of content entries in the container, keyed by UUID
*/
export interface DotCMSPageAssetContainer {
container: DotCMSContainer;
containerStructures: DotCMSContainerStructure[];
contentlets: {
[key: string]: DotCMSBasicContentlet[];
};
}
/**
* Represents a container in DotCMS that can hold content and has various configuration options
*
* @interface DotCMSContainer
* @property {string} identifier - Unique identifier for the container
* @property {string} uuid - UUID of the container instance
* @property {number} iDate - Initial creation date timestamp
* @property {string} type - Type of the container
* @property {string} [owner] - Owner of the container
* @property {string} inode - Unique inode identifier
* @property {string} source - Source of the container
* @property {string} title - Title of the container
* @property {string} friendlyName - User-friendly name of the container
* @property {number} modDate - Last modification date timestamp
* @property {string} modUser - User who last modified the container
* @property {number} sortOrder - Sort order position
* @property {boolean} showOnMenu - Whether to show in navigation menus
* @property {string} [code] - Optional container template code
* @property {number} maxContentlets - Maximum number of content items allowed
* @property {boolean} useDiv - Whether to wrap content in div elements
* @property {string} [sortContentletsBy] - Field to sort contentlets by
* @property {string} preLoop - Code to execute before content loop
* @property {string} postLoop - Code to execute after content loop
* @property {boolean} staticify - Whether to make container static
* @property {string} [luceneQuery] - Optional Lucene query for filtering content
* @property {string} notes - Additional notes about the container
* @property {number} [languageId] - Language identifier
* @property {string} [path] - Container path
* @property {boolean} live - Whether container is live
* @property {boolean} locked - Whether container is locked
* @property {boolean} working - Whether container is in working state
* @property {boolean} deleted - Whether container is deleted
* @property {string} name - Name of the container
* @property {boolean} archived - Whether container is archived
* @property {string} permissionId - Permission identifier
* @property {string} versionId - Version identifier
* @property {string} versionType - Type of version
* @property {string} permissionType - Type of permission
* @property {string} categoryId - Category identifier
* @property {number} idate - Creation date timestamp
* @property {boolean} new - Whether container is new
* @property {string} acceptTypes - Content types accepted by container
* @property {DotCMSBasicContentlet[]} contentlets - Array of content items
* @property {DotCMSSiteParentPermissionable} parentPermissionable - Parent permission configuration
*/
/**
* Represents a container in DotCMS that can hold content and has various configuration options
*
* @interface DotCMSContainer
* @property {string} identifier - Unique identifier for the container
* @property {string} uuid - UUID of the container instance
* @property {number} iDate - Initial creation date timestamp
* @property {string} type - Type of the container
* @property {string} [owner] - Owner of the container
* @property {string} inode - Unique inode identifier
* @property {string} source - Source of the container
* @property {string} title - Title of the container
* @property {string} friendlyName - User-friendly name of the container
* @property {number} modDate - Last modification date timestamp
* @property {string} modUser - User who last modified the container
* @property {number} sortOrder - Sort order position
* @property {boolean} showOnMenu - Whether to show in navigation menus
* @property {string} [code] - Optional container template code
* @property {number} maxContentlets - Maximum number of content items allowed
* @property {boolean} useDiv - Whether to wrap content in div elements
* @property {string} [sortContentletsBy] - Field to sort contentlets by
* @property {string} preLoop - Code to execute before content loop
* @property {string} postLoop - Code to execute after content loop
* @property {boolean} staticify - Whether to make container static
* @property {string} [luceneQuery] - Optional Lucene query for filtering content
* @property {string} notes - Additional notes about the container
* @property {number} [languageId] - Language identifier
* @property {string} [path] - Container path
* @property {boolean} live - Whether container is live
* @property {boolean} locked - Whether container is locked
* @property {boolean} working - Whether container is in working state
* @property {boolean} deleted - Whether container is deleted
* @property {string} name - Name of the container
* @property {boolean} archived - Whether container is archived
* @property {string} permissionId - Permission identifier
* @property {string} versionId - Version identifier
* @property {string} versionType - Type of version
* @property {string} permissionType - Type of permission
* @property {string} categoryId - Category identifier
* @property {number} idate - Creation date timestamp
* @property {boolean} new - Whether container is new
* @property {string} acceptTypes - Content types accepted by container
* @property {DotCMSBasicContentlet[]} contentlets - Array of content items
* @property {DotCMSSiteParentPermissionable} parentPermissionable - Parent permission configuration
*/
export interface DotCMSContainer {
identifier: string;
uuid: string;
iDate: number;
type: string;
owner?: string;
inode: string;
source: string;
title: string;
friendlyName: string;
modDate: number;
modUser: string;
sortOrder: number;
showOnMenu: boolean;
code?: string;
maxContentlets: number;
useDiv: boolean;
sortContentletsBy?: string;
preLoop: string;
postLoop: string;
staticify: boolean;
luceneQuery?: string;
notes: string;
languageId?: number;
path?: string;
live: boolean;
locked: boolean;
working: boolean;
deleted: boolean;
name: string;
archived: boolean;
permissionId: string;
versionId: string;
versionType: string;
permissionType: string;
categoryId: string;
idate: number;
new: boolean;
acceptTypes: string;
contentlets: DotCMSBasicContentlet[];
parentPermissionable: DotCMSSiteParentPermissionable;
}
/**
* Represents a basic contentlet in dotCMS with common properties shared across content types
*
* @interface DotCMSBasicContentlet
* @property {boolean} archived - Whether the contentlet is archived
* @property {string} baseType - The base content type
* @property {boolean} [deleted] - Whether the contentlet is deleted
* @property {string} [binary] - Binary content identifier
* @property {string} [binaryContentAsset] - Binary content asset identifier
* @property {string} [binaryVersion] - Version of binary content
* @property {string} contentType - The specific content type
* @property {string} [file] - Associated file path
* @property {string} folder - Folder path containing the contentlet
* @property {boolean} [hasLiveVersion] - Whether a live version exists
* @property {boolean} hasTitleImage - Whether the contentlet has a title image
* @property {string} host - Host identifier
* @property {string} hostName - Host name
* @property {string} identifier - Unique identifier
* @property {string} inode - Internal node identifier
* @property {any} [image] - Associated image
* @property {number} languageId - Language identifier
* @property {string} [language] - Language name/code
* @property {boolean} live - Whether contentlet is live
* @property {boolean} locked - Whether contentlet is locked
* @property {string} [mimeType] - MIME type for binary content
* @property {string} modDate - Last modification date
* @property {string} modUser - User who last modified
* @property {string} modUserName - Display name of user who last modified
* @property {string} owner - Owner of the contentlet
* @property {number} sortOrder - Sort order position
* @property {string} stInode - Structure inode
* @property {string} title - Title of the contentlet
* @property {string} titleImage - Title image path/identifier
* @property {string} [text] - Text content
* @property {string} url - URL for the contentlet
* @property {boolean} working - Whether contentlet is in working version
* @property {string} [body] - Body content
* @property {string} [contentTypeIcon] - Icon for the content type
* @property {string} [variant] - Content variant identifier
* @property {string} [widgetTitle] - Title for widget type content
* @property {string} [onNumberOfPages] - Number of pages setting
* @property {string} [__icon__] - Icon identifier
* @property {any} [key: string] - Additional dynamic properties
*/
export interface DotCMSBasicContentlet {
archived: boolean;
baseType: string;
deleted?: boolean;
binary?: string;
binaryContentAsset?: string;
binaryVersion?: string;
contentType: string;
file?: string;
folder: string;
hasLiveVersion?: boolean;
hasTitleImage: boolean;
host: string;
hostName: string;
identifier: string;
inode: string;
image?: any;
languageId: number;
language?: string;
live: boolean;
locked: boolean;
mimeType?: string;
modDate: string;
modUser: string;
modUserName: string;
owner: string;
sortOrder: number;
stInode: string;
title: string;
titleImage: string;
text?: string;
url: string;
working: boolean;
body?: string;
contentTypeIcon?: string;
variant?: string;
widgetTitle?: string;
onNumberOfPages?: string;
__icon__?: string;
[key: string]: any;
}
/**
* Represents a navigation item in the DotCMS navigation structure
*
* @interface DotcmsNavigationItem
* @property {string} [code] - Optional unique code identifier for the navigation item
* @property {string} folder - The folder path where this navigation item is located
* @property {DotcmsNavigationItem[]} [children] - Optional array of child navigation items
* @property {string} host - The host/site this navigation item belongs to
* @property {number} languageId - The language ID for this navigation item
* @property {string} href - The URL/link that this navigation item points to
* @property {string} title - The display title of the navigation item
* @property {string} type - The type of navigation item
* @property {number} hash - Hash value for the navigation item
* @property {string} target - The target attribute for the link (e.g. "_blank", "_self")
* @property {number} order - The sort order position of this item in the navigation
*/
export interface DotcmsNavigationItem {
code?: string;
folder: string;
children?: DotcmsNavigationItem[];
host: string;
languageId: number;
href: string;
title: string;
type: string;
hash: number;
target: string;
order: number;
}
/**
* Represents a template in DotCMS that defines the layout and structure of pages
*
* @interface DotCMSTemplate
* @property {number} iDate - Initial creation date timestamp
* @property {string} type - Type of the template
* @property {string} owner - Owner of the template
* @property {string} inode - Unique inode identifier
* @property {string} identifier - Unique identifier for the template
* @property {string} source - Source of the template
* @property {string} title - Title of the template
* @property {string} friendlyName - User-friendly name of the template
* @property {number} modDate - Last modification date timestamp
* @property {string} modUser - User who last modified the template
* @property {number} sortOrder - Sort order position
* @property {boolean} showOnMenu - Whether to show in navigation menus
* @property {string} image - Image associated with the template
* @property {boolean} drawed - Whether template was drawn in template designer
* @property {string} drawedBody - Template body from designer
* @property {string} theme - Theme applied to the template
* @property {boolean} anonymous - Whether template is accessible anonymously
* @property {boolean} template - Whether this is a template
* @property {string} name - Name of the template
* @property {boolean} live - Whether template is live
* @property {boolean} archived - Whether template is archived
* @property {boolean} locked - Whether template is locked
* @property {boolean} working - Whether template is in working state
* @property {string} permissionId - Permission identifier
* @property {string} versionId - Version identifier
* @property {string} versionType - Type of version
* @property {boolean} deleted - Whether template is deleted
* @property {string} permissionType - Type of permission
* @property {string} categoryId - Category identifier
* @property {number} idate - Creation date timestamp
* @property {boolean} new - Whether template is new
* @property {boolean} canEdit - Whether current user can edit template
*/
interface DotCMSTemplate {
iDate: number;
type: string;
owner: string;
inode: string;
identifier: string;
source: string;
title: string;
friendlyName: string;
modDate: number;
modUser: string;
sortOrder: number;
showOnMenu: boolean;
image: string;
drawed: boolean;
drawedBody: string;
theme: string;
anonymous: boolean;
template: boolean;
name: string;
live: boolean;
archived: boolean;
locked: boolean;
working: boolean;
permissionId: string;
versionId: string;
versionType: string;
deleted: boolean;
permissionType: string;
categoryId: string;
idate: number;
new: boolean;
canEdit: boolean;
}
/**
* Represents a page in DotCMS with its metadata, permissions and configuration
*
* @interface DotCMSPage
* @property {string} template - Template identifier used by this page
* @property {number} modDate - Last modification date timestamp
* @property {string} metadata - Page metadata
* @property {string} cachettl - Cache time to live configuration
* @property {string} pageURI - URI path of the page
* @property {string} title - Page title
* @property {string} type - Type of page
* @property {string} showOnMenu - Menu display configuration
* @property {boolean} httpsRequired - Whether HTTPS is required
* @property {string} inode - Unique inode identifier
* @property {any[]} disabledWYSIWYG - Disabled WYSIWYG editors
* @property {string} seokeywords - SEO keywords
* @property {string} host - Host identifier
* @property {number} lastReview - Last review date timestamp
* @property {boolean} working - Whether page is in working state
* @property {boolean} locked - Whether page is locked
* @property {string} stInode - Structure inode identifier
* @property {string} friendlyName - User-friendly name
* @property {boolean} live - Whether page is live
* @property {string} owner - Page owner
* @property {string} identifier - Unique identifier
* @property {any[]} nullProperties - Properties with null values
* @property {string} friendlyname - Alternative friendly name
* @property {string} pagemetadata - Additional page metadata
* @property {number} languageId - Language identifier
* @property {string} url - Page URL
* @property {string} seodescription - SEO description
* @property {string} modUserName - Name of user who last modified
* @property {string} folder - Folder path
* @property {boolean} deleted - Whether page is deleted
* @property {number} sortOrder - Sort order position
* @property {string} modUser - User who last modified
* @property {string} pageUrl - Full page URL
* @property {string} workingInode - Working version inode
* @property {string} shortyWorking - Short working version ID
* @property {boolean} canEdit - Whether current user can edit
* @property {boolean} canRead - Whether current user can read
* @property {boolean} canLock - Whether current user can lock
* @property {number} lockedOn - Lock timestamp
* @property {string} lockedBy - User who locked the page
* @property {string} lockedByName - Name of user who locked
* @property {string} liveInode - Live version inode
* @property {string} shortyLive - Short live version ID
*/
interface DotCMSPage {
template: string;
modDate: number;
metadata: string;
cachettl: string;
pageURI: string;
title: string;
type: string;
showOnMenu: string;
httpsRequired: boolean;
inode: string;
disabledWYSIWYG: any[];
seokeywords: string;
host: string;
lastReview: number;
working: boolean;
locked: boolean;
stInode: string;
friendlyName: string;
live: boolean;
owner: string;
identifier: string;
nullProperties: any[];
friendlyname: string;
pagemetadata: string;
languageId: number;
url: string;
seodescription: string;
modUserName: string;
folder: string;
deleted: boolean;
sortOrder: number;
modUser: string;
pageUrl: string;
workingInode: string;
shortyWorking: string;
canEdit: boolean;
canRead: boolean;
canLock: boolean;
lockedOn: number;
lockedBy: string;
lockedByName: string;
liveInode: string;
shortyLive: string;
}
/**
* Represents view configuration settings for preview/editing modes
*
* @interface DotCMSViewAs
* @property {Object} language - Language configuration
* @property {number} language.id - Language identifier
* @property {string} language.languageCode - ISO language code
* @property {string} language.countryCode - ISO country code
* @property {string} language.language - Language name
* @property {string} language.country - Country name
* @property {string} mode - View mode (e.g. PREVIEW_MODE, EDIT_MODE, LIVE)
*/
/**
* Represents view configuration settings for preview/editing modes
*
* @interface DotCMSViewAs
* @property {Object} language - Language configuration for the view
* @property {number} language.id - Unique identifier for the language
* @property {string} language.languageCode - ISO 639-1 language code (e.g. 'en', 'es')
* @property {string} language.countryCode - ISO 3166-1 country code (e.g. 'US', 'ES')
* @property {string} language.language - Full name of the language (e.g. 'English', 'Spanish')
* @property {string} language.country - Full name of the country (e.g. 'United States', 'Spain')
* @property {string} mode - View mode for the page ('PREVIEW_MODE' | 'EDIT_MODE' | 'LIVE')
*/
/**
* Represents view configuration settings for preview/editing modes
*
* @interface DotCMSViewAs
* @property {Object} language - Language configuration for the view
* @property {number} language.id - Unique identifier for the language
* @property {string} language.languageCode - ISO 639-1 language code (e.g. 'en', 'es')
* @property {string} language.countryCode - ISO 3166-1 country code (e.g. 'US', 'ES')
* @property {string} language.language - Full name of the language (e.g. 'English', 'Spanish')
* @property {string} language.country - Full name of the country (e.g. 'United States', 'Spain')
* @property {string} mode - View mode for the page ('PREVIEW_MODE' | 'EDIT_MODE' | 'LIVE')
*/
interface DotCMSViewAs {
language: {
id: number;
languageCode: string;
countryCode: string;
language: string;
country: string;
};
mode: string;
}
/**
* Represents the layout configuration for a DotCMS page
*
* @interface DotCMSLayout
* @property {string} pageWidth - The overall width of the page
* @property {string} width - The width of the main content area
* @property {string} layout - The layout template/configuration identifier
* @property {string} title - The title of the layout
* @property {boolean} header - Whether the layout includes a header section
* @property {boolean} footer - Whether the layout includes a footer section
* @property {DotPageAssetLayoutBody} body - The main content body configuration
* @property {DotPageAssetLayoutSidebar} sidebar - The sidebar configuration
*/
interface DotCMSLayout {
pageWidth: string;
width: string;
layout: string;
title: string;
header: boolean;
footer: boolean;
body: DotPageAssetLayoutBody;
sidebar: DotPageAssetLayoutSidebar;
}
/**
* Represents the structure configuration for a DotCMS container
*
* @interface DotCMSContainerStructure
* @property {string} id - Unique identifier for the container structure
* @property {string} structureId - ID of the content structure/type
* @property {string} containerInode - Inode of the container
* @property {string} containerId - ID of the container
* @property {string} code - Template code for rendering the structure
* @property {string} contentTypeVar - Variable name of the content type
*/
interface DotCMSContainerStructure {
id: string;
structureId: string;
containerInode: string;
containerId: string;
code: string;
contentTypeVar: string;
}
/**
* Represents the sidebar configuration for a DotCMS page layout
*
* @interface DotPageAssetLayoutSidebar
* @property {boolean} preview - Whether the sidebar is in preview mode
* @property {DotCMSContainer[]} containers - Array of containers placed in the sidebar
* @property {string} location - Position/location of the sidebar
* @property {number} widthPercent - Width of the sidebar as a percentage
* @property {string} width - Width of the sidebar (CSS value)
*/
interface DotPageAssetLayoutSidebar {
preview: boolean;
containers: DotCMSContainer[];
location: string;
widthPercent: number;
width: string;
}
/**
* Represents the body section of a DotCMS page layout
*
* @interface DotPageAssetLayoutBody
* @property {DotPageAssetLayoutRow[]} rows - Array of layout rows that make up the body content
*/
interface DotPageAssetLayoutBody {
rows: DotPageAssetLayoutRow[];
}
/**
* Represents a DotCMS site/host with its configuration and metadata
*
* @interface DotCMSSite
* @property {boolean} lowIndexPriority - Whether this site has low priority for indexing
* @property {string} name - Name of the site
* @property {boolean} default - Whether this is the default site
* @property {string} aliases - Comma-separated list of domain aliases
* @property {boolean} parent - Whether this site is a parent site
* @property {string} tagStorage - Location for storing tags
* @property {boolean} systemHost - Whether this is a system host
* @property {string} inode - Unique inode identifier
* @property {string} versionType - Type of version
* @property {string} structureInode - Structure inode reference
* @property {string} hostname - Primary hostname
* @property {any} [hostThumbnail] - Optional thumbnail image
* @property {string} owner - Owner of the site
* @property {string} permissionId - Permission identifier
* @property {string} permissionType - Type of permission
* @property {string} type - Type of site
* @property {string} identifier - Unique identifier
* @property {number} modDate - Last modification date timestamp
* @property {string} host - Host identifier
* @property {boolean} live - Whether site is live
* @property {string} indexPolicy - Indexing policy configuration
* @property {string} categoryId - Category identifier
* @property {any} [actionId] - Optional action identifier
* @property {boolean} new - Whether site is new
* @property {boolean} archived - Whether site is archived
* @property {boolean} locked - Whether site is locked
* @property {any[]} disabledWysiwyg - Array of disabled WYSIWYG editors
* @property {string} modUser - User who last modified the site
* @property {boolean} working - Whether site is in working state
* @property {Object} titleImage - Title image configuration
* @property {boolean} titleImage.present - Whether title image exists
* @property {string} folder - Folder path
* @property {boolean} htmlpage - Whether site contains HTML pages
* @property {boolean} fileAsset - Whether site contains file assets
* @property {boolean} vanityUrl - Whether site uses vanity URLs
* @property {boolean} keyValue - Whether site uses key-value pairs
* @property {DotCMSSiteStructure} [structure] - Optional site structure configuration
* @property {string} title - Title of the site
* @property {number} languageId - Language identifier
* @property {string} indexPolicyDependencies - Index policy for dependencies
* @property {string} contentTypeId - Content type identifier
* @property {string} versionId - Version identifier
* @property {number} lastReview - Last review timestamp
* @property {any} [nextReview] - Optional next review date
* @property {any} [reviewInterval] - Optional review interval
* @property {number} sortOrder - Sort order position
* @property {DotCMSSiteContentType} contentType - Content type configuration
*/
interface DotCMSSite {
lowIndexPriority: boolean;
name: string;
default: boolean;
aliases: string;
parent: boolean;
tagStorage: string;
systemHost: boolean;
inode: string;
versionType: string;
structureInode: string;
hostname: string;
hostThumbnail?: any;
owner: string;
permissionId: string;
permissionType: string;
type: string;
identifier: string;
modDate: number;
host: string;
live: boolean;
indexPolicy: string;
categoryId: string;
actionId?: any;
new: boolean;
archived: boolean;
locked: boolean;
disabledWysiwyg: any[];
modUser: string;
working: boolean;
titleImage: {
present: boolean;
};
folder: string;
htmlpage: boolean;
fileAsset: boolean;
vanityUrl: boolean;
keyValue: boolean;
structure?: DotCMSSiteStructure;
title: string;
languageId: number;
indexPolicyDependencies: string;
contentTypeId: string;
versionId: string;
lastReview: number;
nextReview?: any;
reviewInterval?: any;
sortOrder: number;
contentType: DotCMSSiteContentType;
}
/**
* Represents a content type configuration for a DotCMS site
*
* @interface DotCMSSiteContentType
* @property {any} [owner] - Optional owner of the content type
* @property {DotCMSSiteParentPermissionable} parentPermissionable - Parent permission configuration
* @property {string} permissionId - Permission identifier
* @property {string} permissionType - Type of permission
*/
interface DotCMSSiteContentType {
owner?: any;
parentPermissionable: DotCMSSiteParentPermissionable;
permissionId: string;
permissionType: string;
}
/**
* Represents parent permissionable configuration for a DotCMS site
*
* @interface DotCMSSiteParentPermissionable
* @property {string} Inode - The inode identifier (legacy casing)
* @property {string} Identifier - The identifier (legacy casing)
* @property {boolean} permissionByIdentifier - Whether permissions are managed by identifier
* @property {string} type - The type of the permissionable
* @property {any} [owner] - Optional owner of the permissionable
* @property {string} identifier - The identifier (modern casing)
* @property {string} permissionId - Permission identifier
* @property {any} [parentPermissionable] - Optional parent permissionable reference
* @property {string} permissionType - Type of permission
* @property {string} inode - The inode identifier (modern casing)
* @property {any} [childrenPermissionable] - Optional children permissionable references
* @property {string} [variantId] - Optional variant identifier
*/
export interface DotCMSSiteParentPermissionable {
Inode: string;
Identifier: string;
permissionByIdentifier: boolean;
type: string;
owner?: any;
identifier: string;
permissionId: string;
parentPermissionable?: any;
permissionType: string;
inode: string;
childrenPermissionable?: any;
variantId?: string;
}
/**
* Represents a content structure/type definition in DotCMS
*
* @interface DotCMSSiteStructure
* @property {number} iDate - Initial creation date timestamp
* @property {string} type - Type of the structure
* @property {any} [owner] - Optional owner of the structure
* @property {string} inode - Unique inode identifier
* @property {string} identifier - Unique identifier
* @property {string} name - Name of the structure
* @property {string} description - Description of the structure
* @property {boolean} defaultStructure - Whether this is a default structure
* @property {any} [reviewInterval] - Optional review interval configuration
* @property {any} [reviewerRole] - Optional reviewer role configuration
* @property {any} [pagedetail] - Optional page detail configuration
* @property {number} structureType - Type identifier for the structure
* @property {boolean} fixed - Whether structure is fixed/immutable
* @property {boolean} system - Whether this is a system structure
* @property {string} velocityVarName - Velocity variable name
* @property {any} [urlMapPattern] - Optional URL mapping pattern
* @property {string} host - Host identifier
* @property {string} folder - Folder path
* @property {string} publishDate - Publication date
* @property {any} [publishDateVar] - Optional publish date variable
* @property {any} [expireDateVar] - Optional expiration date variable
* @property {number} modDate - Last modification date timestamp
* @property {DotCMSSiteField[]} fields - Array of field definitions
* @property {boolean} widget - Whether structure is a widget
* @property {any} [detailPage] - Optional detail page configuration
* @property {DotCMSSiteField[]} fieldsBySortOrder - Fields sorted by order
* @property {boolean} form - Whether structure is a form
* @property {boolean} htmlpageAsset - Whether structure is an HTML page asset
* @property {boolean} content - Whether structure is content
* @property {boolean} fileAsset - Whether structure is a file asset
* @property {boolean} persona - Whether structure is a persona
* @property {string} permissionId - Permission identifier
* @property {string} permissionType - Type of permission
* @property {boolean} live - Whether structure is live
* @property {string} categoryId - Category identifier
* @property {number} idate - Creation date timestamp
* @property {boolean} new - Whether structure is new
* @property {boolean} archived - Whether structure is archived
* @property {boolean} locked - Whether structure is locked
* @property {string} modUser - User who last modified
* @property {boolean} working - Whether structure is in working state
* @property {string} title - Title of the structure
* @property {string} versionId - Version identifier
* @property {string} versionType - Type of version
*/
interface DotCMSSiteStructure {
iDate: number;
type: string;
owner?: any;
inode: string;
identifier: string;
name: string;
description: string;
defaultStructure: boolean;
reviewInterval?: any;
reviewerRole?: any;
pagedetail?: any;
structureType: number;
fixed: boolean;
system: boolean;
velocityVarName: string;
urlMapPattern?: any;
host: string;
folder: string;
publishDate: string;
publishDateVar?: any;
expireDateVar?: any;
modDate: number;
fields: DotCMSSiteField[];
widget: boolean;
detailPage?: any;
fieldsBySortOrder: DotCMSSiteField[];
form: boolean;
htmlpageAsset: boolean;
content: boolean;
fileAsset: boolean;
persona: boolean;
permissionId: string;
permissionType: string;
live: boolean;
categoryId: string;
idate: number;
new: boolean;
archived: boolean;
locked: boolean;
modUser: string;
working: boolean;
title: string;
versionId: string;
versionType: string;
}
/**
* Represents a field in a DotCMS site structure/content type
*
* @interface DotCMSSiteField
* @property {number} iDate - Initial creation date timestamp
* @property {string} type - Type of the field
* @property {any} [owner] - Owner of the field
* @property {string} inode - Unique inode identifier
* @property {string} identifier - Unique identifier
* @property {string} structureInode - Inode of the parent structure/content type
* @property {string} fieldName - Name of the field
* @property {string} fieldType - Type of field (text, textarea, etc)
* @property {any} [fieldRelationType] - Type of relationship if field is relational
* @property {string} fieldContentlet - Contentlet field mapping
* @property {boolean} required - Whether field is required
* @property {string} velocityVarName - Velocity variable name
* @property {number} sortOrder - Sort order position
* @property {any} [values] - Possible field values
* @property {any} [regexCheck] - Regular expression validation
* @property {any} [hint] - Help text/hint
* @property {any} [defaultValue] - Default value
* @property {boolean} indexed - Whether field is indexed
* @property {boolean} listed - Whether field appears in listings
* @property {boolean} fixed - Whether field is fixed/immutable
* @property {boolean} readOnly - Whether field is read-only
* @property {boolean} searchable - Whether field is searchable
* @property {boolean} unique - Whether field must be unique
* @property {number} modDate - Last modification date timestamp
* @property {string} dataType - Data type of the field
* @property {boolean} live - Whether field is live
* @property {string} categoryId - Category identifier
* @property {number} idate - Creation date timestamp
* @property {boolean} new - Whether field is new
* @property {boolean} archived - Whether field is archived
* @property {boolean} locked - Whether field is locked
* @property {string} modUser - User who last modified
* @property {boolean} working - Whether field is in working state
* @property {string} permissionId - Permission identifier
* @property {any} [parentPermissionable] - Parent permission configuration
* @property {string} permissionType - Type of permission
* @property {string} title - Title of the field
* @property {string} versionId - Version identifier
* @property {string} versionType - Type of version
*/
interface DotCMSSiteField {
iDate: number;
type: string;
owner?: any;
inode: string;
identifier: string;
structureInode: string;
fieldName: string;
fieldType: string;
fieldRelationType?: any;
fieldContentlet: string;
required: boolean;
velocityVarName: string;
sortOrder: number;
values?: any;
regexCheck?: any;
hint?: any;
defaultValue?: any;
indexed: boolean;
listed: boolean;
fixed: boolean;
readOnly: boolean;
searchable: boolean;
unique: boolean;
modDate: number;
dataType: string;
live: boolean;
categoryId: string;
idate: number;
new: boolean;
archived: boolean;
locked: boolean;
modUser: string;
working: boolean;
permissionId: string;
parentPermissionable?: any;
permissionType: string;
title: string;
versionId: string;
versionType: string;
}
/**
* Represents a basic page object returned from GraphQL queries
*
* @interface DotCMSBasicGraphQLPage
* @property {string} publishDate - The date the page was published
* @property {string} type - The type of the page
* @property {boolean} httpsRequired - Whether HTTPS is required to access the page
* @property {string} inode - Unique inode identifier
* @property {string} path - The path/URL of the page
* @property {string} identifier - Unique identifier for the page
* @property {boolean} hasTitleImage - Whether the page has a title image
* @property {number} sortOrder - Sort order position
* @property {string} extension - File extension
* @property {boolean} canRead - Whether current user can read the page
* @property {string} pageURI - URI of the page
* @property {boolean} canEdit - Whether current user can edit the page
* @property {boolean} archived - Whether page is archived
* @property {string} friendlyName - User-friendly name
* @property {string} workingInode - Working version inode
* @property {string} url - URL of the page
* @property {boolean} hasLiveVersion - Whether page has a live version
* @property {boolean} deleted - Whether page is deleted
* @property {string} pageUrl - URL of the page
* @property {string} shortyWorking - Short identifier for working version
* @property {string} mimeType - MIME type of the page
* @property {boolean} locked - Whether page is locked
* @property {string} stInode - Structure inode
* @property {string} contentType - Content type
* @property {string} creationDate - Date page was created
* @property {string} liveInode - Live version inode
* @property {string} name - Name of the page
* @property {string} shortyLive - Short identifier for live version
* @property {string} modDate - Last modification date
* @property {string} title - Title of the page
* @property {string} baseType - Base content type
* @property {boolean} working - Whether page is in working state
* @property {boolean} canLock - Whether current user can lock the page
* @property {boolean} live - Whether page is live
* @property {boolean} isContentlet - Whether page is a contentlet
* @property {string} statusIcons - Status icons
* @property {Object} conLanguage - Language information
* @property {number} conLanguage.id - Language ID
* @property {string} conLanguage.language - Language name
* @property {string} conLanguage.languageCode - Language code
* @property {Object} template - Template information
* @property {boolean} template.drawed - Whether template is drawn
* @property {DotCMSPageGraphQLContainer[]} containers - Array of containers on the page
* @property {DotCMSLayout} layout - Layout configuration
* @property {DotCMSViewAs} viewAs - View configuration
* @property {Record<string, unknown>} urlContentMap - URL to content mapping
* @property {DotCMSSite} site - Site information
* @property {Record<string, unknown>} _map - Additional mapping data
*/
export interface DotCMSBasicGraphQLPage {
publishDate: string;
type: string;
httpsRequired: boolean;
inode: string;
path: string;
identifier: string;
hasTitleImage: boolean;
sortOrder: number;
extension: string;
canRead: boolean;
pageURI: string;
canEdit: boolean;
archived: boolean;
friendlyName: string;
workingInode: string;
url: string;
hasLiveVersion: boolean;
deleted: boolean;
pageUrl: string;
shortyWorking: string;
mimeType: string;
locked: boolean;
stInode: string;
contentType: string;
creationDate: string;
liveInode: string;
name: string;
shortyLive: string;
modDate: string;
title: string;
baseType: string;
working: boolean;
canLock: boolean;
live: boolean;
isContentlet: boolean;
statusIcons: string;
conLanguage: {
id: number;
language: string;
languageCode: string;
};
template: {
drawed: boolean;
};
containers: DotCMSPageGraphQLContainer[];
layout: DotCMSLayout;
viewAs: DotCMSViewAs;
urlContentMap: Record<string, unknown>;
site: DotCMSSite;
_map: Record<string, unknown>;
}
/**
* Represents a container in a GraphQL page response
*
* @interface DotCMSPageGraphQLContainer
* @property {string} path - The path/location of the container in the page
* @property {string} identifier - Unique identifier for the container
* @property {number} [maxContentlets] - Optional maximum number of content items allowed in container
* @property {DotCMSContainerStructure[]} containerStructures - Array of content type structures allowed in container
* @property {DotCMSPageContainerContentlets[]} containerContentlets - Array of content items in container
*/
export interface DotCMSPageGraphQLContainer {
path: string;
identifier: string;
maxContentlets?: number;
containerStructures: DotCMSContainerStructure[];
containerContentlets: DotCMSPageContainerContentlets[];
}
export interface DotCMSPageContainerContentlets {
uuid: string;
contentlets: DotCMSBasicContentlet[];
}
/**
* Represents a GraphQL error
* @interface DotCMSGraphQLError
*/
export interface DotCMSGraphQLError {
message: string;
locations: {
line: number;
column: number;
}[];
extensions: {
classification: string;
};
}
/**
* Represents the complete response from a GraphQL page query
*
* @template TContent - The type of the content data
* @template TNav - The type of the navigation data
*/
export interface DotCMSGraphQLPageResponse<TContent = Record<string, any>> {
page: DotCMSBasicGraphQLPage;
content?: TContent;
errors?: DotCMSGraphQLError;
graphql: {
query: string;
variables: Record<string, unknown>;
};
}
/**
* Payload for initializing the UVE
* @interface DotCMSEditablePage
*/
export type DotCMSEditablePage = DotCMSGraphQLPageResponse | DotCMSPageAsset;
export {};