UNPKG

@dotcms/types

Version:

## Overview

1,150 lines (1,149 loc) 46.8 kB
/** * 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 {};