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

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

Raw ↑
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.
All 92 tools →

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.