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
Derived by API Evangelist
Built from the contracts dotCMS publishes. dotCMS did not publish this file.
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
Work with this as data
Every overlay here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for openapi overlays
4 MCP tools reach this
find_overlaysBrowse and filter every overlay in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/dotcms-rest-api-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.