dotCMS · OpenAPI Overlay 1.0.0
API Evangelist enhancements for the dotCMS REST API
4 actions
4 updates
update
extends
openapi/dotcms-rest-api-openapi.json
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-slugx-apievangelist-harvestedx-apievangelist-sourcex-apievangelist-profilex-apievangelist-contactdotcmsApiTokendotcmsBasicAuthx-apievangelist-agent-surfaces
Targets 2
$.info
$.components.securitySchemes
OpenAPI Overlay
overlay: 1.0.0
info:
title: API Evangelist enhancements for the dotCMS REST API
version: 1.0.0
extends: openapi/dotcms-rest-api-openapi.json
x-generated: '2026-09-06'
x-method: generated
x-source: >-
Derived from analysis of the first-party dotCMS OpenAPI harvested from
https://demo.dotcms.com/api/openapi.json, plus the docs sources cited in
authentication/dotcms-authentication.yml and conventions/dotcms-conventions.yml.
x-note: >-
This overlay is API Evangelist's annotation layer. It NEVER mutates the harvested contract.
Its most substantive action is the one the provider's own spec is missing: dotCMS declares
zero securitySchemes while 368 of its operations declare a 401, so a generated client ships
with no auth wiring at all. The bearer scheme added below is what the dotCMS auth docs
describe, expressed as the OpenAPI the docs imply — applied as an overlay so the distinction
between what dotCMS published and what we inferred stays visible.
actions:
- target: $.info
description: Stamp API Evangelist provenance and the observed contract profile.
update:
x-apievangelist-slug: dotcms
x-apievangelist-harvested: '2026-09-06'
x-apievangelist-source: https://demo.dotcms.com/api/openapi.json
x-apievangelist-profile:
paths: 592
operations: 754
schemas: 606
tags: 71
operation_id_coverage: 1.0
deprecated_operations: 49
media_types_with_examples: 54
security_schemes_declared: 0
problem_json_responses: 0
idempotency_parameters: 0
rate_limit_headers: 0
x-apievangelist-contact:
name: dotCMS
url: https://www.dotcms.com
security: security@dotcms.com
- target: $.components.securitySchemes
description: >-
Add the bearer-JWT scheme dotCMS documents but does not declare. Source of truth is
https://dev.dotcms.com/docs/build/apis/api-basics/rest-api-authentication — the token is
minted at POST /api/v1/authentication/api-token (operationId requestApiToken) and sent as
Authorization: Bearer.
update:
dotcmsApiToken:
type: http
scheme: bearer
bearerFormat: JWT
description: >-
dotCMS API token. Mint via POST /api/v1/authentication/api-token or in the admin UI
under System > Users > API Access Tokens. Documented by dotCMS; NOT declared in the
first-party specification — added by API Evangelist overlay.
x-apievangelist-added: true
x-apievangelist-evidence: https://dev.dotcms.com/docs/build/apis/api-basics/rest-api-authentication
dotcmsBasicAuth:
type: apiKey
in: header
name: AUTHENTICATION
description: >-
Base64(user:password) in the non-standard AUTHENTICATION header. dotCMS's own docs warn
that base64 does not encrypt the credential; HTTPS only. Modelled as apiKey because the
header name is not Authorization.
x-apievangelist-added: true
- target: $.info
description: Record the agent-facing surfaces dotCMS operates alongside this REST contract.
update:
x-apievangelist-agent-surfaces:
mcp_server:
package: "@dotcms/mcp-server"
transport: stdio
docs: https://dev.dotcms.com/docs/mcp-server
note: >-
Two of its four tools are sandboxes over THIS specification, so every operation here
is reachable from an agent even though only three are named in a tool binding. See
mcp/dotcms-tool-crosswalk.yml.
agent_skills:
repo: https://github.com/dotCMS/agent-toolkit
count: 2
graphql:
endpoint: /api/v1/graphql
introspection: disabled
api_catalog: https://www.dotcms.com/.well-known/api-catalog
markdown_negotiation:
note: >-
The RFC 9727 catalog declares a service-doc for markdown negotiation — any page on
www.dotcms.com returns markdown when fetched with Accept: text/markdown. Verified.
- target: $.info
description: >-
Record the runtime-semantics gaps an agent must plan around, so they travel with the
contract instead of only living in the conventions artifact.
update:
x-apievangelist-runtime-semantics:
idempotency:
coverage: none
consequence: >-
No Idempotency-Key on any of the 399 write operations. A retried write can duplicate.
Read state back before retrying.
rate_limits:
published: false
headers: []
status_on_exhaustion: null
reversibility:
grade: documented
reversible: [unpublish, unarchive, unlock, cancel, reset-permissions]
irreversible: [deleteAsset, deleteFolder]
windows: not stated by the provider
error_format: dotcms-response-entity
response_envelope:
payload_key: entity
note: The payload is always under `entity`, never at the response root.
deprecation:
in_contract: true
runtime_header: false
advance_notice: 6 months