dotCMS · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for dotCMS REST Content API
33 actions
33 updates
phrasing
extends
openapi/dotcms-content-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 33 · first 16 shown; the file carries all of them
$.info
$.paths['/api/v1/contentrelationships/{params}'].get
$.paths['/api/v1/content/_canlock/{inodeOrIdentifier}'].get
$.paths['/api/v1/content/{identifier}/languages'].get
$.paths['/api/v1/content/{identifier}/references/count'].get
$.paths['/api/v1/content/{inodeOrIdentifier}'].get
$.paths['/api/v1/content/{inodeOrIdentifier}/references'].get
$.paths['/api/v1/content/{identifier}/push/history'].get
$.paths['/api/v1/content/_lock/{inodeOrIdentifier}'].put
$.paths['/api/v1/content/related'].post
$.paths['/api/v1/content/_refresh/{identifierOrInode}'].put
$.paths['/api/v1/content/_draft'].put
$.paths['/api/v1/content/search'].post
$.paths['/api/v1/content/_unlock/{inodeOrIdentifier}'].put
$.paths['/api/v1/content/_search'].post
$.paths['/api/v1/content/versions/{inode}'].get
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 Content API
version: 1.0.0
extends: openapi/dotcms-content-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: 32
- target: $.paths['/api/v1/contentrelationships/{params}'].get
update:
x-apievangelist-phrasing:
intent: Fetch content with relationships (deprecated)
effect: read
questions:
- Is there still an old endpoint that returns a contentlet together with its relationships?
- What replaced the deprecated contentrelationships lookup in dotCMS?
instructions:
- text: Use the deprecated content relationships endpoint with parameters {params}.
slots:
params: path.params
- text: Pull content plus its related items through the legacy relationships lookup using {params}.
slots:
params: path.params
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/_canlock/{inodeOrIdentifier}'].get
update:
x-apievangelist-phrasing:
intent: Check whether I can lock a contentlet
effect: read
questions:
- Am I allowed to lock this piece of content before I start editing it?
- Can I check if a contentlet is lockable in a specific language?
instructions:
- text: Check whether I can lock contentlet {inodeOrIdentifier}.
slots:
inodeOrIdentifier: path.inodeOrIdentifier
- text: See if contentlet {inodeOrIdentifier} is lockable by me in language {language}.
slots:
inodeOrIdentifier: path.inodeOrIdentifier
language: query.language
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/{identifier}/languages'].get
update:
x-apievangelist-phrasing:
intent: See which languages a contentlet exists in
effect: read
questions:
- Which languages does this piece of content already have a version in?
- How can I tell which translations are missing for a contentlet?
instructions:
- text: List the languages available for contentlet {identifier} and mark which have versions.
slots:
identifier: path.identifier
- text: Show me which translations exist for content {identifier}.
slots:
identifier: path.identifier
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/{identifier}/references/count'].get
update:
x-apievangelist-phrasing:
intent: Count references to a contentlet
effect: read
questions:
- How many places reference this contentlet?
- Is a piece of content used anywhere before I delete it, just as a number?
instructions:
- text: Count how many references point to contentlet {identifier}.
slots:
identifier: path.identifier
- text: Give me just the reference total for content {identifier}.
slots:
identifier: path.identifier
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/{inodeOrIdentifier}'].get
update:
x-apievangelist-phrasing:
intent: Retrieve a contentlet
effect: read
questions:
- How do I fetch a single contentlet by its identifier or inode in dotCMS?
- Can I load a contentlet with its related content resolved to a certain depth?
- Can I get a specific variant of a piece of content?
instructions:
- text: Get contentlet {inodeOrIdentifier}.
slots:
inodeOrIdentifier: path.inodeOrIdentifier
- text: Fetch contentlet {inodeOrIdentifier} in language {language} with relationships at depth {depth}.
slots:
inodeOrIdentifier: path.inodeOrIdentifier
language: query.language
depth: query.depth
- text: Load the {variantName} variant of contentlet {inodeOrIdentifier}.
slots:
variantName: query.variantName
inodeOrIdentifier: path.inodeOrIdentifier
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/{inodeOrIdentifier}/references'].get
update:
x-apievangelist-phrasing:
intent: List pages and containers using a contentlet
effect: read
questions:
- Which pages, containers and personas use this contentlet?
- Where exactly is a piece of content placed across my site?
instructions:
- text: List every page, container and persona that references contentlet {inodeOrIdentifier}.
slots:
inodeOrIdentifier: path.inodeOrIdentifier
- text: Show where content {inodeOrIdentifier} is used in language {language}.
slots:
inodeOrIdentifier: path.inodeOrIdentifier
language: query.language
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/{identifier}/push/history'].get
update:
x-apievangelist-phrasing:
intent: View a contentlet's push publishing history
effect: read
questions:
- When was this contentlet last push-published to another environment?
- Can I page through the push history of a piece of content?
instructions:
- text: Show the push publishing history for contentlet {identifier}.
slots:
identifier: path.identifier
- text: List the last {limit} pushes of content {identifier}.
slots:
limit: query.limit
identifier: path.identifier
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/_lock/{inodeOrIdentifier}'].put
update:
x-apievangelist-phrasing:
intent: Lock a contentlet for editing
effect: write
questions:
- How do I lock a contentlet so nobody else edits it while I work?
- Can I lock just one language version of a piece of content?
instructions:
- text: Lock contentlet {inodeOrIdentifier} for me.
slots:
inodeOrIdentifier: path.inodeOrIdentifier
- text: Lock the {language} version of content {inodeOrIdentifier}.
slots:
language: query.language
inodeOrIdentifier: path.inodeOrIdentifier
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/related'].post
update:
x-apievangelist-phrasing:
intent: Pull content related through a relationship field
effect: read
questions:
- How can I get the items linked to a contentlet through a relationship field?
- Can I filter and sort the related content returned for a relationship field?
instructions:
- text: Pull content related to {identifier} through field {fieldVariable}, {limit} at a time from offset {offset}, ordered by {orderBy}.
slots:
identifier: requestBody.identifier
fieldVariable: requestBody.fieldVariable
limit: requestBody.limit
offset: requestBody.offset
orderBy: requestBody.orderBy
- text: Get items related to {identifier} via {fieldVariable} matching {condition}, limit {limit}, offset {offset}, sorted by {orderBy}.
slots:
identifier: requestBody.identifier
fieldVariable: requestBody.fieldVariable
condition: requestBody.condition
limit: requestBody.limit
offset: requestBody.offset
orderBy: requestBody.orderBy
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/_refresh/{identifierOrInode}'].put
update:
x-apievangelist-phrasing:
intent: Reindex and clear cache for one contentlet
effect: write
questions:
- My content change isn't showing up in search results — can I force one contentlet to refresh?
- What's the way to reindex a single contentlet and clear its cache?
instructions:
- text: Refresh contentlet {identifierOrInode} in the index and cache.
slots:
identifierOrInode: path.identifierOrInode
- text: Reindex the {language} version of content {identifierOrInode}.
slots:
language: query.language
identifierOrInode: path.identifierOrInode
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/_draft'].put
update:
x-apievangelist-phrasing:
intent: Save a content draft without workflow
effect: write
questions:
- Can I save work in progress on a contentlet without triggering a workflow?
- How do I store a draft version of content without publishing it?
instructions:
- text: 'Save this contentlet as a draft: {contentlet}.'
slots:
contentlet: requestBody.contentlet
- text: Save a draft of content {identifier} with these values {contentlet}.
slots:
identifier: query.identifier
contentlet: requestBody.contentlet
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/search'].post
update:
x-apievangelist-phrasing:
intent: Search content by searchable fields
effect: read
questions:
- Can I search content without writing a Lucene query myself?
- How do I include archived or locked content in a simple content search?
- Which content matches a keyword across my content types' searchable fields?
instructions:
- text: Search content for {globalSearch}.
slots:
globalSearch: requestBody.globalSearch
- text: Find content matching {globalSearch}, including archived items, {perPage} per page.
slots:
globalSearch: requestBody.globalSearch
perPage: requestBody.perPage
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/_unlock/{inodeOrIdentifier}'].put
update:
x-apievangelist-phrasing:
intent: Unlock a contentlet
effect: write
questions:
- How do I release my lock on a contentlet when I'm done editing?
- Can I unlock one language version of a locked piece of content?
instructions:
- text: Unlock contentlet {inodeOrIdentifier}.
slots:
inodeOrIdentifier: path.inodeOrIdentifier
- text: Release the lock on the {language} version of content {inodeOrIdentifier}.
slots:
language: query.language
inodeOrIdentifier: path.inodeOrIdentifier
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/_search'].post
update:
x-apievangelist-phrasing:
intent: Search content with a Lucene query
effect: read
questions:
- How do I run a raw Lucene query against dotCMS content?
- Can a Lucene content search return related content and rendered output?
- What's the way to sort and paginate Lucene search results?
instructions:
- text: Run the Lucene query {query} against content.
slots:
query: requestBody.query
- text: Search content with Lucene {query}, sorted by {sort}, limit {limit}.
slots:
query: requestBody.query
sort: requestBody.sort
limit: requestBody.limit
- text: Lucene-search {query} in language {languageId} with relationships to depth {depth}.
slots:
query: requestBody.query
languageId: requestBody.languageId
depth: requestBody.depth
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/versions/{inode}'].get
update:
x-apievangelist-phrasing:
intent: Get one content version by inode
effect: read
questions:
- How can I open a specific past version of a contentlet by its inode?
- What did this exact content version look like?
instructions:
- text: Get content version {inode}.
slots:
inode: path.inode
- text: Show me the contentlet version stored under inode {inode}.
slots:
inode: path.inode
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/versions'].get
update:
x-apievangelist-phrasing:
intent: List versions of content
effect: read
questions:
- Where can I see all the versions of a contentlet?
- Can I group content versions by language?
instructions:
- text: List versions of content {identifier}.
slots:
identifier: query.identifier
- text: Get versions for inodes {inodes}, grouped by language.
slots:
inodes: query.inodes
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/versions/id/{identifier}/history'].get
update:
x-apievangelist-phrasing:
intent: Show a contentlet's edit history
effect: read
questions:
- Who edited this contentlet and when, like the History tab shows?
- Can I include old versions when viewing a content item's history?
instructions:
- text: Show the edit history of contentlet {identifier} in language {languageId}.
slots:
identifier: path.identifier
languageId: query.languageId
- text: Get the last {limit} history entries for content {identifier} in language {languageId}.
slots:
limit: query.limit
identifier: path.identifier
languageId: query.languageId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/resourcelinks/field/{field}'].get
update:
x-apievangelist-phrasing:
intent: Get the resource link for one binary field
effect: read
questions:
- How do I get the download link for one file field on a contentlet?
- What's the public URL of a specific binary field's file?
instructions:
- text: Get the resource link for field {field} on contentlet {identifier}.
slots:
field: path.field
identifier: query.identifier
- text: Give me the URL of the {field} file on content inode {inode}.
slots:
field: path.field
inode: query.inode
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/resourcelinks'].get
update:
x-apievangelist-phrasing:
intent: Get resource links for all binary fields
effect: read
questions:
- Can I get the links to every file attached to a contentlet at once?
- Which binary files does this piece of content carry, and what are their URLs?
instructions:
- text: List resource links for all binary fields of contentlet {identifier}.
slots:
identifier: query.identifier
- text: Get every file link on content inode {inode}.
slots:
inode: query.inode
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/_bulkrefresh'].post
update:
x-apievangelist-phrasing:
intent: Reindex a batch of contentlets
effect: write
questions:
- Can I reindex many contentlets at once, including all their versions?
- Does a bulk reindex finish immediately or run as a background job?
instructions:
- text: Reindex contentlets {contentletIds}.
slots:
contentletIds: requestBody.contentletIds
- text: Bulk refresh {contentletIds} and include their dependencies.
slots:
contentletIds: requestBody.contentletIds
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/_import/abandoned'].get
update:
x-apievangelist-phrasing:
intent: List abandoned content import jobs
effect: read
questions:
- Which content imports were abandoned?
- Are there import jobs stuck in the ABANDONED state?
instructions:
- text: List abandoned content import jobs.
- text: Show page {page} of abandoned imports, {pageSize} per page.
slots:
page: query.page
pageSize: query.pageSize
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/_import/active'].get
update:
x-apievangelist-phrasing:
intent: List content imports in progress
effect: read
questions:
- Which CSV imports are running or waiting right now?
- Can I see imports that are new, processing or queued?
instructions:
- text: List active content import jobs.
- text: Show {pageSize} running imports from page {page}.
slots:
pageSize: query.pageSize
page: query.page
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/_import/{jobId}/cancel'].post
update:
x-apievangelist-phrasing:
intent: Cancel a content import job
effect: destructive
questions:
- How do I stop a CSV content import that's already running?
- Is cancelling an import instant, or does it take a while?
instructions:
- text: Cancel content import job {jobId}.
slots:
jobId: path.jobId
- text: Stop import {jobId}.
slots:
jobId: path.jobId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/_import/canceled'].get
update:
x-apievangelist-phrasing:
intent: List canceled content import jobs
effect: read
questions:
- Which content imports were canceled?
- Can I page through imports someone stopped?
instructions:
- text: List canceled content import jobs.
- text: Show page {page} of canceled imports.
slots:
page: query.page
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/_import/completed'].get
update:
x-apievangelist-phrasing:
intent: List completed content import jobs
effect: read
questions:
- Which content imports have finished, whatever their outcome?
- What imports reached the COMPLETED state?
instructions:
- text: List completed content import jobs.
- text: Show {pageSize} finished imports per page.
slots:
pageSize: query.pageSize
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/_import/failed'].get
update:
x-apievangelist-phrasing:
intent: List failed content import jobs
effect: read
questions:
- Which of my CSV imports failed?
- Can I see only the imports that ended in error?
instructions:
- text: List failed content import jobs.
- text: Show page {page} of failed imports.
slots:
page: query.page
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/_import/{jobId}'].get
update:
x-apievangelist-phrasing:
intent: Check a content import job's status
effect: read
questions:
- What's the current status of my content import?
- How far along is a specific CSV import job?
instructions:
- text: Get the status of import job {jobId}.
slots:
jobId: path.jobId
- text: Check on content import {jobId}.
slots:
jobId: path.jobId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/_import'].get
update:
x-apievangelist-phrasing:
intent: List all content import jobs
effect: read
questions:
- Can I list every content import job regardless of its state?
- What imports have been run on this instance?
instructions:
- text: List all content import jobs.
- text: Show page {page} of all imports, {pageSize} per page.
slots:
page: query.page
pageSize: query.pageSize
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/_import'].post
update:
x-apievangelist-phrasing:
intent: Import content from a CSV file
effect: write
questions:
- How do I bulk-load content into dotCMS from a CSV?
- Can I queue a CSV import for a content type with import settings?
instructions:
- text: Import {file} as content using settings {form}.
slots:
file: requestBody.file
form: requestBody.form
- text: Start a content import job from CSV {file} with parameters {form}.
slots:
file: requestBody.file
form: requestBody.form
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/_import/{jobId}/monitor'].get
update:
x-apievangelist-phrasing:
intent: Stream live progress of an import job
effect: read
questions:
- Can I watch a content import's progress in real time?
- Is there a server-sent events stream for import job updates?
instructions:
- text: Stream live progress for import job {jobId}.
slots:
jobId: path.jobId
- text: Monitor import {jobId} until it finishes.
slots:
jobId: path.jobId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/_import/successful'].get
update:
x-apievangelist-phrasing:
intent: List successful content import jobs
effect: read
questions:
- Which content imports completed successfully?
- Can I see only the imports that succeeded, not the failed completions?
instructions:
- text: List successful content import jobs.
- text: Show page {page} of successful imports.
slots:
page: query.page
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/content/_import/_validate'].post
update:
x-apievangelist-phrasing:
intent: Dry-run a CSV content import
effect: read
questions:
- Can I check a CSV against a content type before actually importing it?
- Is there a preview mode that validates an import without creating content?
instructions:
- text: Validate CSV {file} with settings {form} without importing.
slots:
file: requestBody.file
form: requestBody.form
- text: Preview the import of {file} using {form}.
slots:
file: requestBody.file
form: requestBody.form
method: generated
generated: '2026-09-26'