dotCMS · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for dotCMS REST Page API
19 actions
19 updates
phrasing
extends
openapi/dotcms-page-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for dotCMS's API. It is a proposal applied on top of the contract, not a document dotCMS publishes.
What the actions change
x-apievangelist-phrasing
Targets 19 · first 16 shown; the file carries all of them
$.info
$.paths['/api/v1/page/{pageId}/content'].post
$.paths['/api/v1/page/{pageId}/languages'].get
$.paths['/api/v1/page/_check-permission'].post
$.paths['/api/v1/page/copyContent'].put
$.paths['/api/v1/page/{pageId}/_deepcopy'].put
$.paths['/api/v1/page/actions'].post
$.paths['/api/v1/page/{pageId}/content/tree'].get
$.paths['/api/v1/page/{pageId}/render/versions'].get
$.paths['/api/v1/page/types'].get
$.paths['/api/v1/page/{pageId}/personas'].get
$.paths['/api/v1/page/_render-sources/{uri}'].get
$.paths['/api/v1/page/json/{uri}'].get
$.paths['/api/v1/page/render/{uri}'].get
$.paths['/api/v1/page/renderHTML/{uri}'].get
$.paths['/api/v1/page/layout'].post
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for dotCMS REST Page API
version: 1.0.0
extends: openapi/dotcms-page-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-09-26'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 18
- target: $.paths['/api/v1/page/{pageId}/content'].post
update:
x-apievangelist-phrasing:
intent: Replace which content sits in a page's containers
effect: write
questions:
- How do I set exactly which contentlets appear in each container on a page?
- Does saving page content remove anything I leave out of a container slot?
instructions:
- text: Replace the container content mapping on page {pageId}.
slots:
pageId: path.pageId
- text: Set the content layout of page {pageId} for variant {variantName}.
slots:
pageId: path.pageId
variantName: query.variantName
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/page/{pageId}/languages'].get
update:
x-apievangelist-phrasing:
intent: Check which languages a page exists in
effect: read
questions:
- Which languages is this page already translated into?
- Is there an older endpoint that flags page availability per language?
instructions:
- text: List the languages page {pageId} is available in.
slots:
pageId: path.pageId
- text: Check which language versions exist for page {pageId}.
slots:
pageId: path.pageId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/page/_check-permission'].post
update:
x-apievangelist-phrasing:
intent: Check a user's permission on a page
effect: read
questions:
- Can the current user edit or publish a given page path?
- What permission is checked by default when I test access to a page?
instructions:
- text: Check whether I have {type} permission on page {path}.
slots:
type: requestBody.type
path: requestBody.path
- text: Verify I can read page {path} on site {hostId}.
slots:
path: requestBody.path
hostId: requestBody.hostId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/page/copyContent'].put
update:
x-apievangelist-phrasing:
intent: Copy a contentlet placed on a page
effect: write
questions:
- Can I duplicate a single contentlet that's already placed on a page?
- What gets returned when I copy content inside a page container?
instructions:
- text: Copy contentlet {contentId} in container {containerId} on page {pageId}.
slots:
contentId: requestBody.contentId
containerId: requestBody.containerId
pageId: requestBody.pageId
- text: Make an editable copy of content {contentId} used on page {pageId}.
slots:
contentId: requestBody.contentId
pageId: requestBody.pageId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/page/{pageId}/_deepcopy'].put
update:
x-apievangelist-phrasing:
intent: Deep copy a page and all its content
effect: write
questions:
- How do I clone a page along with copies of every contentlet on it?
- Does a deep copy duplicate the page's content or just link to it?
instructions:
- text: Deep copy page {pageId} including all its content.
slots:
pageId: path.pageId
- text: Clone page {pageId} with fresh copies of every contentlet.
slots:
pageId: path.pageId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/page/actions'].post
update:
x-apievangelist-phrasing:
intent: Find workflow actions available for a page
effect: read
questions:
- What workflow actions can I take on the page at a given path?
- Can I get a page's properties and its available actions together?
instructions:
- text: List the workflow actions available for page {path}.
slots:
path: requestBody.path
- text: Show page {path} on site {hostId} with its available workflow actions.
slots:
path: requestBody.path
hostId: requestBody.hostId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/page/{pageId}/content/tree'].get
update:
x-apievangelist-phrasing:
intent: Get a page's container-to-content structure
effect: read
questions:
- Which contentlets are placed in which containers on this page?
- Can I see the multi-tree mapping and order of content on a page?
instructions:
- text: Show the content tree of page {pageId}.
slots:
pageId: path.pageId
- text: Get the container and contentlet positions for page {pageId}.
slots:
pageId: path.pageId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/page/{pageId}/render/versions'].get
update:
x-apievangelist-phrasing:
intent: Compare a page's live and preview versions
effect: read
questions:
- Does my page have unpublished changes compared to the live version?
- Can I render both the live and working versions of a page at once?
instructions:
- text: Compare live and preview renders of page {pageId}.
slots:
pageId: path.pageId
- text: Check if page {pageId} differs between live and working in language {langId}.
slots:
pageId: path.pageId
langId: query.langId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/page/types'].get
update:
x-apievangelist-phrasing:
intent: List content types that act as pages
effect: read
questions:
- Which content types can render as pages, including URL-mapped ones?
- Can I filter and page through page-capable content types?
instructions:
- text: List all content types that are pages or have URL map patterns.
- text: Find page content types matching {filter}.
slots:
filter: query.filter
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/page/{pageId}/personas'].get
update:
x-apievangelist-phrasing:
intent: List personas personalized on a page
effect: read
questions:
- Which personas have their own content variation on this page?
- Can I tell which personas are still using the default page content?
instructions:
- text: List personas and whether each is personalized on page {pageId}.
slots:
pageId: path.pageId
- text: Show personalized personas on page {pageId} for site {hostId}.
slots:
pageId: path.pageId
hostId: query.hostId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/page/_render-sources/{uri}'].get
update:
x-apievangelist-phrasing:
intent: Map a rendered page to its source files
effect: read
questions:
- Which template, theme and container files make up a rendered page?
- Can I get source file references for a page without the file contents?
instructions:
- text: List the source files behind page {uri}.
slots:
uri: path.uri
- text: Show render sources for {uri} on site {host_id} for persona {persona_id}.
slots:
uri: path.uri
host_id: query.host_id
persona_id: query.persona_id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/page/json/{uri}'].get
update:
x-apievangelist-phrasing:
intent: Get a page's metadata as JSON
effect: read
questions:
- Can I get the objects that make up a page as JSON without rendered HTML?
- What did this page look like on a past date using Time Machine?
instructions:
- text: Get the page metadata JSON for {uri}.
slots:
uri: path.uri
- text: Fetch unrendered page JSON for {uri} as of {publishDate}.
slots:
uri: path.uri
publishDate: query.publishDate
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/page/render/{uri}'].get
update:
x-apievangelist-phrasing:
intent: Get a page with its rendered HTML and content
effect: read
questions:
- How do I fetch a page for headless use with its containers already rendered?
- Can I render a page as a specific persona in a given language?
instructions:
- text: Render page {uri} with its container content as JSON.
slots:
uri: path.uri
- text: Render {uri} in language {language_id} for persona {persona}.
slots:
uri: path.uri
language_id: query.language_id
persona: query.com.dotmarketing.persona.id
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/page/renderHTML/{uri}'].get
update:
x-apievangelist-phrasing:
intent: Get a page's raw rendered HTML
effect: read
questions:
- Can I get just the final HTML of a page without any JSON wrapper?
- What returns a page's raw markup for server-side embedding?
instructions:
- text: Give me the raw HTML of page {uri}.
slots:
uri: path.uri
- text: Render {uri} on site {host_id} as plain HTML in {mode} mode.
slots:
uri: path.uri
host_id: query.host_id
mode: query.mode
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/page/layout'].post
update:
x-apievangelist-phrasing:
intent: Save a page template layout
effect: write
questions:
- How do I save a new template layout with rows and columns?
- Can I save a template layout with a theme before attaching it to any page?
instructions:
- text: Save template layout {layout} titled {title}.
slots:
layout: requestBody.layout
title: requestBody.title
- text: Save a template with layout {layout} using theme {themeId} on site {siteId}.
slots:
layout: requestBody.layout
themeId: requestBody.themeId
siteId: requestBody.siteId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/page/{pageId}/layout'].post
update:
x-apievangelist-phrasing:
intent: Link a template layout to a page
effect: write
questions:
- How do I apply a layout to a specific page?
- What happens to a page's existing template when I link a new layout?
instructions:
- text: Apply layout {layout} to page {pageId}.
slots:
layout: requestBody.layout
pageId: path.pageId
- text: Link layout {layout} to page {pageId} for variant {variantName}.
slots:
layout: requestBody.layout
pageId: path.pageId
variantName: query.variantName
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/page/search'].get
update:
x-apievangelist-phrasing:
intent: Search pages by path
effect: read
questions:
- Which pages have a path containing a given word?
- Can I limit a page path search to live pages on live sites?
instructions:
- text: Find pages whose path matches {path}.
slots:
path: query.path
- text: Search live pages only for path {path}.
slots:
path: query.path
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/page/{pageId}/styles'].put
update:
x-apievangelist-phrasing:
intent: Update style properties of content on a page
effect: write
questions:
- Can I change the styling of a contentlet on a page without touching the layout?
- Are style changes on page content scoped to a persona?
instructions:
- text: Update styles for contentlet {identifier} in container slot {uuid} on page {pageId}.
slots:
identifier: requestBody.identifier
uuid: requestBody.uuid
pageId: path.pageId
- text: Restyle content {identifier} in slot {uuid} on page {pageId} for persona {personaTag}.
slots:
identifier: requestBody.identifier
uuid: requestBody.uuid
pageId: path.pageId
personaTag: requestBody.personaTag
method: generated
generated: '2026-09-26'