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.
View Overlay File View on GitHub Overlay Specification

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

Raw ↑
# 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'