dotCMS · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for dotCMS REST Content Type API
13 actions
13 updates
phrasing
extends
openapi/dotcms-content-type-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 13
$.info
$.paths['/api/structure/{path}'].get
$.paths['/api/v1/contenttype/{baseVariableName}/_copy'].post
$.paths['/api/v1/contenttype'].get
$.paths['/api/v1/contenttype'].post
$.paths['/api/v1/contenttype/id/{idOrVar}'].get
$.paths['/api/v1/contenttype/id/{idOrVar}'].put
$.paths['/api/v1/contenttype/id/{idOrVar}'].delete
$.paths['/api/v1/contenttype/_filter'].post
$.paths['/api/v1/contenttype/page'].get
$.paths['/api/v1/contenttype/basetypes'].get
$.paths['/api/v1/contenttype/render/id/{idOrVar}'].get
$.paths['/api/v1/contenttype/id/{idOrVar}/metadata'].patch
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 Type API
version: 1.0.0
extends: openapi/dotcms-content-type-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: 12
- target: $.paths['/api/structure/{path}'].get
update:
x-apievangelist-phrasing:
intent: List content types that have WYSIWYG fields
effect: read
questions:
- Which content types include a WYSIWYG rich text field?
- Is there a legacy structure endpoint for finding types with WYSIWYG fields?
instructions:
- text: List structures with WYSIWYG fields for path {path}, type {type}, callback {callback}.
slots:
path: path.path
type: path.type
callback: path.callback
- text: Find content types with rich text fields named {name} using path {path}, type {type} and callback {callback}.
slots:
name: query.name
path: path.path
type: path.type
callback: path.callback
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/contenttype/{baseVariableName}/_copy'].post
update:
x-apievangelist-phrasing:
intent: Copy an existing content type
effect: write
questions:
- How do I create a new content type based on an existing one?
- Can I copy a content type into a different site or folder?
instructions:
- text: Copy content type {baseVariableName} as {name}.
slots:
baseVariableName: path.baseVariableName
name: requestBody.name
- text: Duplicate content type {baseVariableName} into {name} on site {host}.
slots:
baseVariableName: path.baseVariableName
name: requestBody.name
host: requestBody.host
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/contenttype'].get
update:
x-apievangelist-phrasing:
intent: List content types
effect: read
questions:
- What content types are defined in my dotCMS instance?
- Can I list only content types of a certain base type, like widgets?
instructions:
- text: List all content types.
- text: List content types of base type {type} on site {host}.
slots:
type: query.type
host: query.host
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/contenttype'].post
update:
x-apievangelist-phrasing:
intent: Create one or more content types
effect: write
questions:
- How do I define a new content type with its fields in one request?
- Can I create several content types at once?
instructions:
- text: Create a content type named {name} of class {clazz}.
slots:
name: requestBody.name
clazz: requestBody.clazz
- text: Create content type {name} ({clazz}) with fields {fields} and workflow {workflow}.
slots:
name: requestBody.name
clazz: requestBody.clazz
fields: requestBody.fields
workflow: requestBody.workflow
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/contenttype/id/{idOrVar}'].get
update:
x-apievangelist-phrasing:
intent: Get a content type and its fields
effect: read
questions:
- What fields does my Blog content type have?
- Can I look up a content type by its Velocity variable name?
instructions:
- text: Show content type {idOrVar} with all its fields.
slots:
idOrVar: path.idOrVar
- text: Get the definition of content type {idOrVar} in language {languageId}.
slots:
idOrVar: path.idOrVar
languageId: query.languageId
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/contenttype/id/{idOrVar}'].put
update:
x-apievangelist-phrasing:
intent: Replace a content type's full definition
effect: destructive
questions:
- Will fields I leave out of a content type update be removed?
- What's the safe pattern for updating a content type without losing fields?
instructions:
- text: Update content type {idOrVar} with name {name} and class {clazz}, keeping every existing field.
slots:
idOrVar: path.idOrVar
name: requestBody.name
clazz: requestBody.clazz
- text: Replace the field list of content type {idOrVar} with {fields}.
slots:
idOrVar: path.idOrVar
fields: requestBody.fields
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/contenttype/id/{idOrVar}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a content type
effect: destructive
questions:
- How do I delete a content type I no longer need?
- Why is the response entity a string when I delete a content type?
instructions:
- text: Delete content type {idOrVar}.
slots:
idOrVar: path.idOrVar
- text: Permanently remove the {idOrVar} content type.
slots:
idOrVar: path.idOrVar
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/contenttype/_filter'].post
update:
x-apievangelist-phrasing:
intent: Filter content types with paging controls
effect: read
questions:
- Can I filter content types by name and control page size and sort order?
- Is there a POST-based way to search content types?
instructions:
- text: Filter content types by {filter} with {perPage} per page.
slots:
filter: requestBody.filter
perPage: requestBody.perPage
- text: Search content types for {filter} sorted by {orderBy}.
slots:
filter: requestBody.filter
orderBy: requestBody.orderBy
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/contenttype/page'].get
update:
x-apievangelist-phrasing:
intent: List content types usable on a page
effect: read
questions:
- Which content types can I add to a particular page?
- Can I list the content types allowed on a page in a given language?
instructions:
- text: List content types I can use on page {pagePathOrId}.
slots:
pagePathOrId: query.pagePathOrId
- text: Show content types for page {pagePathOrId} in language {language}.
slots:
pagePathOrId: query.pagePathOrId
language: query.language
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/contenttype/basetypes'].get
update:
x-apievangelist-phrasing:
intent: List the base content types
effect: read
questions:
- What base types can a content type be built on?
- Which base content types does dotCMS support, like widget or file asset?
instructions:
- text: List the base content types.
- text: Show every base type I can create a content type from.
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/contenttype/render/id/{idOrVar}'].get
update:
x-apievangelist-phrasing:
intent: Get a content type with custom fields rendered
effect: read
questions:
- Can I see a content type with its custom Velocity fields already rendered?
- How do custom fields render for a specific content version?
instructions:
- text: Get content type {idOrVar} with its custom fields rendered.
slots:
idOrVar: path.idOrVar
- text: Render the custom fields of {idOrVar} for content inode {inode}.
slots:
idOrVar: path.idOrVar
inode: query.inode
method: generated
generated: '2026-09-26'
- target: $.paths['/api/v1/contenttype/id/{idOrVar}/metadata'].patch
update:
x-apievangelist-phrasing:
intent: Merge metadata into a content type
effect: write
questions:
- Can I add metadata to a content type without touching its fields?
- Does a metadata patch remove keys I don't send?
instructions:
- text: Merge these metadata keys into content type {idOrVar}.
slots:
idOrVar: path.idOrVar
- text: Set only the metadata of content type {idOrVar}, leaving fields alone.
slots:
idOrVar: path.idOrVar
method: generated
generated: '2026-09-26'