dotCMS · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for dotCMS REST Maintenance API
27 actions
27 updates
phrasing
extends
openapi/dotcms-maintenance-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 27 · first 16 shown; the file carries all of them
$.info
$.paths['/api/v1/maintenance/_contentlets'].delete
$.paths['/api/v1/maintenance/_pushedAssets'].delete
$.paths['/api/v1/maintenance/_systemJobs/{group}/{name}'].delete
$.paths['/api/v1/maintenance/_downloadAssets'].get
$.paths['/api/v1/maintenance/_downloadClusterLog/{fileName}'].get
$.paths['/api/v1/maintenance/_downloadDb'].get
$.paths['/api/v1/maintenance/_downloadLog/{fileName}'].get
$.paths['/api/v1/maintenance/_downloadStarter'].get
$.paths['/api/v1/maintenance/_downloadStarterWithAssets'].get
$.paths['/api/v1/maintenance/_oldVersions'].delete
$.paths['/api/v1/maintenance/assets/_clean'].get
$.paths['/api/v1/maintenance/assets/_clean'].post
$.paths['/api/v1/maintenance/assets/_fix'].get
$.paths['/api/v1/maintenance/assets/_fix'].post
$.paths['/api/v1/maintenance/_threads'].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 Maintenance API
version: 1.0.0
extends: openapi/dotcms-maintenance-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: 26
- target: $.paths['/api/v1/maintenance/_contentlets'].delete
update:
x-apievangelist-phrasing:
intent: Permanently bulk delete contentlets by identifier
effect: destructive
questions:
- How do I permanently destroy a batch of contentlets without sending them to the trash?
- Does bulk deleting a contentlet also remove its other language versions?
- If one contentlet in a bulk delete fails, do the rest still get destroyed?
instructions:
- text: Permanently destroy the contentlets with identifiers {identifiers}, bypassing the trash.
slots:
identifiers: requestBody.identifiers
- text: Bulk delete contentlets {identifiers} and all of their language siblings for good.
slots:
identifiers: requestBody.identifiers
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/_pushedAssets'].delete
update:
x-apievangelist-phrasing:
intent: Clear all push publishing history records
effect: destructive
questions:
- How can I wipe the pushed assets table so everything looks never pushed?
- Can I reset push publishing history across all endpoints at once?
instructions:
- text: Delete every pushed assets record so all assets appear never pushed.
- text: Clear the whole push publishing history table.
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/_systemJobs/{group}/{name}'].delete
update:
x-apievangelist-phrasing:
intent: Remove a Quartz scheduler job by group and name
effect: destructive
questions:
- How do I remove an orphaned Quartz scheduler job that errored after an upgrade?
- Does removing a Quartz job also delete its triggers?
instructions:
- text: Remove the Quartz job {name} in group {group} along with its triggers.
slots:
name: path.name
group: path.group
- text: Clean up the errored scheduler job {name} from job group {group}.
slots:
name: path.name
group: path.group
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/_downloadAssets'].get
update:
x-apievangelist-phrasing:
intent: Download a zip of the site's asset files
effect: read
questions:
- Can I download just the assets folder from my dotCMS instance as an archive?
- Is there a way to include old asset versions when downloading the assets?
instructions:
- text: Download the assets archive only, without the database.
- text: Download the assets archive with old versions set to {oldAssets} and a max file size of {maxSize}.
slots:
oldAssets: query.oldAssets
maxSize: query.maxSize
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/_downloadClusterLog/{fileName}'].get
update:
x-apievangelist-phrasing:
intent: Download a log file collected from the cluster
effect: read
questions:
- How do I pull a log file gathered from all cluster nodes?
- Can I fetch a cluster-wide log bundle by file name?
instructions:
- text: Download the cluster log file {fileName}.
slots:
fileName: path.fileName
- text: Grab {fileName} from the cluster logs so I can inspect it.
slots:
fileName: path.fileName
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/_downloadDb'].get
update:
x-apievangelist-phrasing:
intent: Download a database dump
effect: read
questions:
- How do I download a full dump of the dotCMS database?
- Can I get a database backup file straight from the maintenance API?
instructions:
- text: Download a dump of the database.
- text: Export the database as a backup file for me.
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/_downloadLog/{fileName}'].get
update:
x-apievangelist-phrasing:
intent: Download a single server log file
effect: read
questions:
- How can I download one of this server's log files by its name?
- Can I fetch dotcms.log from the local node without shell access?
instructions:
- text: Download the log file {fileName} from this server.
slots:
fileName: path.fileName
- text: Fetch the local node's {fileName} log.
slots:
fileName: path.fileName
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/_downloadStarter'].get
update:
x-apievangelist-phrasing:
intent: Download a starter site without assets
effect: read
questions:
- How do I export a starter package that contains data but no asset files?
- Can I cap the file size when generating a starter without assets?
instructions:
- text: Download a starter package without assets.
- text: Build a data-only starter limited to files of {maxSize}.
slots:
maxSize: query.maxSize
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/_downloadStarterWithAssets'].get
update:
x-apievangelist-phrasing:
intent: Download a starter site including assets
effect: read
questions:
- How do I export a complete starter that bundles the data together with the asset files?
- Can a starter with assets also include old asset versions?
instructions:
- text: Download a starter that includes both data and assets.
- text: Generate a starter with assets, old versions {oldAssets}, max file size {maxSize}.
slots:
oldAssets: query.oldAssets
maxSize: query.maxSize
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/_oldVersions'].delete
update:
x-apievangelist-phrasing:
intent: Drop content and asset versions older than a date
effect: destructive
questions:
- How do I purge old versions of contentlets, templates and containers older than a certain date?
- What gets removed when I drop old asset versions, and how long can it take?
instructions:
- text: Drop all versions of versionable objects older than {date}.
slots:
date: query.date
- text: Purge old content, template and workflow history versions from before {date}.
slots:
date: query.date
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/assets/_clean'].get
update:
x-apievangelist-phrasing:
intent: Check the latest clean-assets job
effect: read
questions:
- Is an orphan asset cleanup currently running, and what was its last result?
- Has a clean-assets job ever run on this cluster?
instructions:
- text: Show me the status of the most recent clean-assets job.
- text: Check whether the orphan asset cleanup has finished.
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/assets/_clean'].post
update:
x-apievangelist-phrasing:
intent: Start a job that cleans orphaned assets
effect: destructive
questions:
- How do I kick off a cleanup of orphaned asset files on the cluster?
- What happens if I request an orphan asset cleanup while one is already running?
instructions:
- text: Queue a clean-assets job to remove orphaned asset files.
- text: Start the orphan asset cleanup and give me the job id.
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/assets/_fix'].get
update:
x-apievangelist-phrasing:
intent: Check the latest fix-assets job
effect: read
questions:
- What was the outcome of the last asset inconsistency fix run?
- Is a fix-assets job active right now?
instructions:
- text: Show me the most recent fix-assets job and its status.
- text: Check how the latest asset inconsistency fix went.
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/assets/_fix'].post
update:
x-apievangelist-phrasing:
intent: Start a job that fixes asset inconsistencies
effect: write
questions:
- How do I trigger a repair of asset inconsistencies across the cluster?
- Why would requesting a fix-assets job return a 409 conflict?
instructions:
- text: Queue a fix-assets job to repair asset inconsistencies.
- text: Start the asset inconsistency repair and return its status URL.
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/_threads'].get
update:
x-apievangelist-phrasing:
intent: Get a full JVM thread dump
effect: read
questions:
- How do I get a JVM thread dump with stack traces to diagnose a hung server?
- Can the thread dump detect deadlocks and filter to only dotCMS threads?
instructions:
- text: Take a full JVM thread dump with stack traces and deadlock detection.
- text: Dump JVM threads with system threads hidden set to {hideSystem}.
slots:
hideSystem: query.hideSystem
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/_threads/info'].get
update:
x-apievangelist-phrasing:
intent: Get JVM uptime and thread count summary
effect: read
questions:
- How long has the JVM been up and what is its peak thread count?
- Is there a lightweight way to see current thread count without a full dump?
instructions:
- text: Show the JVM start time, uptime and current versus peak thread count.
- text: Give me a quick thread-count summary for the server.
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/_pgDumpAvailable'].get
update:
x-apievangelist-phrasing:
intent: Check whether pg_dump is available
effect: read
questions:
- Can this server produce a PostgreSQL dump, i.e. is pg_dump installed?
- Why might the database download not be available on my instance?
instructions:
- text: Check if pg_dump is available on the server.
- text: Tell me whether database dumps can be generated here.
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/_sessions'].get
update:
x-apievangelist-phrasing:
intent: List active HTTP sessions
effect: read
questions:
- Who is currently logged in, i.e. which HTTP sessions are active?
- How do I get the token needed to kill a specific user session?
instructions:
- text: List every active HTTP session with its session token.
- text: Show me who has an open session right now.
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/_sessions'].delete
update:
x-apievangelist-phrasing:
intent: Log out every session except mine
effect: destructive
questions:
- How do I force everyone else to log out of dotCMS at once?
- Will invalidating all sessions also end my own session?
instructions:
- text: Invalidate all active sessions except my own.
- text: Kick every other user out and tell me how many sessions were ended.
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/_sessions/{token}'].delete
update:
x-apievangelist-phrasing:
intent: Invalidate one user session
effect: destructive
questions:
- How do I end one specific user's session without logging out everyone?
- Why does killing a session return 403 after fifteen minutes?
instructions:
- text: Invalidate the session with token {token}.
slots:
token: path.token
- text: Log out the single session identified by {token}.
slots:
token: path.token
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/_systemJobs'].get
update:
x-apievangelist-phrasing:
intent: List Quartz scheduler jobs
effect: read
questions:
- Which Quartz scheduler jobs exist and when will they fire next?
- How can I find scheduler jobs that errored after an upgrade?
instructions:
- text: List all Quartz scheduler jobs with their triggers and running status.
- text: Show me any scheduler jobs flagged with an error.
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/_searchAndReplace'].post
update:
x-apievangelist-phrasing:
intent: Find and replace text across the whole database
effect: destructive
questions:
- How do I replace a string everywhere in content, templates, containers and links?
- Can a database-wide search and replace be undone?
instructions:
- text: Replace every occurrence of {searchString} with {replaceString} across all content.
slots:
searchString: requestBody.searchString
replaceString: requestBody.replaceString
- text: Swap the old domain {searchString} for {replaceString} in all working and live versions.
slots:
searchString: requestBody.searchString
replaceString: requestBody.replaceString
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/_shutdown'].delete
update:
x-apievangelist-phrasing:
intent: Shut down this server node
effect: destructive
questions:
- How do I shut down the dotCMS instance I'm connected to?
- Can I stop a single node remotely through the maintenance API?
instructions:
- text: Shut down this dotCMS server.
- text: Stop the current node only.
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/maintenance/_shutdownCluster'].delete
update:
x-apievangelist-phrasing:
intent: Shut down every node in the cluster
effect: destructive
questions:
- How do I shut down all nodes in the cluster at once?
- Can I stagger a cluster shutdown with a rolling delay between nodes?
instructions:
- text: Shut down the entire cluster.
- text: Do a rolling cluster shutdown with a {rollingDelay} delay between nodes.
slots:
rollingDelay: query.rollingDelay
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/upgradetask'].post
update:
x-apievangelist-phrasing:
intent: Run a specific upgrade task
effect: write
questions:
- How do I manually re-run a single upgrade task by class name?
- Can I execute a specific database upgrade task that was skipped?
instructions:
- text: Run the upgrade task {upgradeTaskClass}.
slots:
upgradeTaskClass: requestBody.upgradeTaskClass
- text: Execute upgrade class {upgradeTaskClass} now.
slots:
upgradeTaskClass: requestBody.upgradeTaskClass
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/caches/menucache'].delete
update:
x-apievangelist-phrasing:
intent: Flush the navigation menu cache
effect: destructive
questions:
- My site navigation is stale, how do I clear the menu cache?
- Can I flush only the menu cache without touching other caches?
instructions:
- text: Clear the menu cache.
- text: Flush the navigation menu cache so menus rebuild.
method: generated
generated: '2026-09-26'