{ "$schema": "http://json-schema.org/draft-07/schema#", "$id": "https://raw.githubusercontent.com/api-evangelist/django-cms/main/json-schema/djangocms-page-content-schema.json", "title": "Django CMS Page Content", "description": "JSON Schema for a Django CMS page content object as returned by the djangocms-rest API", "type": "object", "properties": { "title": { "type": "string", "maxLength": 255, "description": "Page title" }, "page_title": { "type": "string", "maxLength": 255, "description": "Page title used in the HTML tag; falls back to title" }, "menu_title": { "type": "string", "maxLength": 255, "description": "Title displayed in navigation menus; falls back to title" }, "meta_description": { "type": "string", "description": "SEO meta description for the page" }, "redirect": { "type": ["string", "null"], "maxLength": 2048, "description": "Redirect URL if configured; null when no redirect is set" }, "absolute_url": { "type": "string", "format": "uri", "description": "Absolute frontend URL for the page" }, "path": { "type": "string", "maxLength": 200, "description": "Relative URL path of the page (e.g. 'blog/my-post')" }, "details": { "type": "string", "format": "uri", "description": "API endpoint URL for this page" }, "is_home": { "type": "boolean", "description": "Whether this is the home/root page" }, "login_required": { "type": "boolean", "description": "Whether the page requires authentication to view" }, "in_navigation": { "type": "boolean", "description": "Whether the page appears in navigation menus" }, "soft_root": { "type": "boolean", "description": "Whether the page acts as a soft root for navigation" }, "template": { "type": "string", "maxLength": 100, "description": "Template file used to render this page" }, "xframe_options": { "type": "string", "maxLength": 50, "description": "X-Frame-Options header value for this page" }, "limit_visibility_in_menu": { "type": ["boolean", "null"], "default": false, "description": "Whether menu visibility is restricted by user auth state" }, "language": { "type": "string", "maxLength": 10, "description": "Language code for this page content (e.g. 'en', 'de')", "examples": ["en", "de", "fr", "zh-cn"] }, "languages": { "type": "array", "items": { "type": "string", "maxLength": 10 }, "description": "All languages this page is available in" }, "is_preview": { "type": "boolean", "default": false, "description": "Whether this response was served in preview/draft mode" }, "application_namespace": { "type": ["string", "null"], "maxLength": 200, "description": "Application namespace if the page is an apphook; null otherwise" }, "creation_date": { "type": "string", "format": "date-time", "description": "ISO 8601 timestamp when the page was first created" }, "changed_date": { "type": "string", "format": "date-time", "description": "ISO 8601 timestamp when the page was last modified" }, "placeholders": { "type": "array", "items": { "$ref": "#/definitions/Placeholder" }, "description": "Ordered list of placeholders defined by the page template" } }, "required": [ "title", "page_title", "menu_title", "meta_description", "absolute_url", "path", "details", "is_home", "login_required", "in_navigation", "soft_root", "template", "language", "languages", "creation_date", "changed_date" ], "definitions": { "Placeholder": { "type": "object", "title": "Placeholder", "description": "A CMS placeholder containing structured plugin content for a given slot", "properties": { "slot": { "type": "string", "description": "Template slot name identifying this placeholder" }, "label": { "type": "string", "description": "Human-readable label for the placeholder" }, "language": { "type": "string", "description": "Language code of the placeholder content" }, "content": { "type": "array", "items": { "$ref": "#/definitions/PluginInstance" }, "description": "Ordered list of serialized plugin data objects" }, "details": { "type": "string", "format": "uri", "description": "Direct API URL for this placeholder" }, "html": { "type": "string", "default": "", "description": "Server-rendered HTML for the placeholder (only present when ?html=1 is requested)" } }, "required": ["slot", "label", "language", "details"] }, "PluginInstance": { "type": "object", "title": "PluginInstance", "description": "A serialized CMS plugin instance within a placeholder", "properties": { "plugin_type": { "type": "string", "description": "Plugin class name (e.g. 'TextPlugin', 'PicturePlugin')" }, "pk": { "type": "integer", "description": "Primary key of the plugin instance" }, "parent_plugin_type": { "type": ["string", "null"], "description": "Parent plugin type if this is a child plugin; null for root plugins" } }, "required": ["plugin_type"], "additionalProperties": true } } }