dotCMS Apps API

Third-party application integration and configuration

Operations 12

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /api/v1/apps List available app integrations · List available apps #
Ask an LLM
“Which third-party app integrations are available in dotCMS?”
“Can I filter the list of apps by name?”
Tell an agent
List all available apps.
Show apps matching {filter}.
POST /api/v1/apps Upload a new app descriptor · Create app #
Ask an LLM
“How do I add a new app integration by uploading its YAML descriptor?”
“Can I register a custom app definition in dotCMS?”
Tell an agent
Upload this app descriptor file to create a new app.
Register a custom app from the attached YAML descriptor.
DELETE /api/v1/apps Delete specific secrets of an app on a site · Delete individual app secret #
Ask an LLM
“How do I remove just one secret from an app's configuration on a site?”
“Can I delete individual app parameters without wiping the whole configuration?”
Tell an agent destructive · confirm first
Delete secrets {params} from app {key} on site {siteId}.
Remove only the {params} entries of app {key} for site {siteId}.
GET /api/v1/apps/{key}/{siteId} Get an app's configuration on a site · Get app detail #
Ask an LLM
“How is a particular app configured for one of my sites?”
“Which secrets are set for an app on a specific site?”
Tell an agent
Show the configuration of app {key} on site {siteId}.
Get app {key}'s secrets for site {siteId}.
PUT /api/v1/apps/{key}/{siteId} Update one secret of an app on a site · Update app individual secret #
Ask an LLM
“How do I change a single secret value for an app on a site?”
“Can I update one app parameter without resending the others?”
Tell an agent
Update a single secret of app {key} on site {siteId}.
Change one parameter value for app {key} on {siteId}.
POST /api/v1/apps/{key}/{siteId} Save an app's full set of secrets on a site · Create app secrets #
Ask an LLM
“How do I configure an app for a site by saving all its secrets?”
“Can I set up an app integration on a specific site for the first time?”
Tell an agent
Save the full secret configuration for app {key} on site {siteId}.
Configure app {key} on site {siteId} with these secrets.
DELETE /api/v1/apps/{key}/{siteId} Remove all of an app's secrets from a site · Delete all app secrets #
Ask an LLM
“How do I wipe an app's entire configuration from one site?”
“Can I unconfigure an app on a single site but keep it elsewhere?”
Tell an agent destructive · confirm first
Delete every secret for app {key} on site {siteId}.
Unconfigure app {key} from site {siteId}.
GET /api/v1/apps/{key} Get an app and the sites it's configured on · Get app by key #
Ask an LLM
“Which sites have a given app configured?”
“How do I look up an app by its key?”
Tell an agent
Get app {key} and its site configurations.
Show which sites use app {key}.
DELETE /api/v1/apps/{key} Delete an app and its configurations · Delete app #
Ask an LLM
“How do I remove an app integration entirely?”
“Can I delete an app's descriptor file along with its configuration?”
Tell an agent destructive · confirm first
Delete app {key}.
Remove app {key} and set descriptor removal to {removeDescriptor}.
POST /api/v1/apps/export Export app secrets to an encrypted file · Export secrets #
Ask an LLM
“How do I export my app secrets so I can move them to another environment?”
“Can I export secrets for only certain apps and sites, protected by a password?”
Tell an agent
Export all app secrets encrypted with password {password}.
Export secrets for {appKeysBySite} with password {password}, export all set to {exportAll}.
POST /api/v1/apps/import Import app secrets from an exported file · Import secrets #
Ask an LLM
“How do I load app secrets exported from another dotCMS environment?”
“Can I restore app configurations from a secrets export file?”
Tell an agent
Import app secrets from this exported file.
Restore app configurations from the uploaded secrets export.
GET /api/v1/ema Get the Edit Mode Anywhere configuration · Get details #
Ask an LLM
“Is Edit Mode Anywhere configured for the current site?”
“What EMA settings are in place for editing a headless front end?”
Tell an agent
Show the Edit Mode Anywhere configuration.
Get the EMA app details for the current site.

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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 API
curl "https://apis.io/api/v1/apis/dotcms:dotcms-apps-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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.

OpenAPI Specification

dotcms-apps-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: dotCMS REST Apps API
  version: '3'
  description: Third-party application integration and configuration
servers:
- url: /
  description: dotCMS Server
tags:
- name: Apps
  description: Third-party application integration and configuration
paths:
  /api/v1/apps:
    get:
      tags:
      - Apps
      operationId: listAvailableApps
      parameters:
      - name: filter
        in: query
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json: {}
            application/javascript: {}
      summary: List available apps
      x-summary-source: derived
    post:
      tags:
      - Apps
      operationId: createApp
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/FormDataMultiPart'
      responses:
        default:
          description: default response
          content:
            application/json: {}
            application/javascript: {}
      summary: Create app
      x-summary-source: derived
    delete:
      tags:
      - Apps
      operationId: deleteIndividualAppSecret
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/DeleteSecretForm'
      responses:
        default:
          description: default response
          content:
            application/json: {}
            application/javascript: {}
      summary: Delete individual app secret
      x-summary-source: derived
  /api/v1/apps/{key}/{siteId}:
    get:
      tags:
      - Apps
      operationId: getAppDetail
      parameters:
      - name: key
        in: path
        required: true
        schema:
          type: string
      - name: siteId
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json: {}
            application/javascript: {}
      summary: Get app detail
      x-summary-source: derived
    put:
      tags:
      - Apps
      operationId: updateAppIndividualSecret
      parameters:
      - name: key
        in: path
        required: true
        schema:
          type: string
      - name: siteId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/SecretForm'
      responses:
        default:
          description: default response
          content:
            application/json: {}
            application/javascript: {}
      summary: Update app individual secret
      x-summary-source: derived
    post:
      tags:
      - Apps
      operationId: createAppSecrets
      parameters:
      - name: key
        in: path
        required: true
        schema:
          type: string
      - name: siteId
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/SecretForm'
      responses:
        default:
          description: default response
          content:
            application/json: {}
            application/javascript: {}
      summary: Create app secrets
      x-summary-source: derived
    delete:
      tags:
      - Apps
      operationId: deleteAllAppSecrets
      parameters:
      - name: key
        in: path
        required: true
        schema:
          type: string
      - name: siteId
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json: {}
            application/javascript: {}
      summary: Delete all app secrets
      x-summary-source: derived
  /api/v1/apps/{key}:
    get:
      tags:
      - Apps
      operationId: getAppByKey
      parameters:
      - name: key
        in: path
        required: true
        schema:
          type: string
      responses:
        default:
          description: default response
          content:
            application/json: {}
            application/javascript: {}
      summary: Get app by key
      x-summary-source: derived
    delete:
      tags:
      - Apps
      operationId: deleteApp
      parameters:
      - name: key
        in: path
        required: true
        schema:
          type: string
      - name: removeDescriptor
        in: query
        schema:
          type: boolean
      responses:
        default:
          description: default response
          content:
            application/json: {}
            application/javascript: {}
      summary: Delete app
      x-summary-source: derived
  /api/v1/apps/export:
    post:
      tags:
      - Apps
      operationId: exportSecrets
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/ExportSecretForm'
      responses:
        default:
          description: default response
          content:
            application/octet-stream: {}
            application/json: {}
      summary: Export secrets
      x-summary-source: derived
  /api/v1/apps/import:
    post:
      tags:
      - Apps
      operationId: importSecrets
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/FormDataMultiPart'
      responses:
        default:
          description: default response
          content:
            application/json: {}
      summary: Import secrets
      x-summary-source: derived
  /api/v1/ema:
    get:
      tags:
      - Apps
      operationId: getDetails
      responses:
        default:
          description: default response
          content:
            application/json: {}
            application/javascript: {}
      summary: Get details
      x-summary-source: derived
components:
  schemas:
    MultiPart:
      type: object
      properties:
        contentDisposition:
          $ref: '#/components/schemas/ContentDisposition'
        entity:
          type: object
        headers:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
        mediaType:
          type: object
          properties:
            type:
              type: string
            subtype:
              type: string
            parameters:
              type: object
              additionalProperties:
                type: string
            wildcardType:
              type: boolean
            wildcardSubtype:
              type: boolean
        messageBodyWorkers:
          $ref: '#/components/schemas/MessageBodyWorkers'
        parent:
          $ref: '#/components/schemas/MultiPart'
        providers:
          type: object
        bodyParts:
          type: array
          items:
            $ref: '#/components/schemas/BodyPart'
        parameterizedHeaders:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/ParameterizedHeader'
    SecretForm:
      type: object
    FormDataBodyPart:
      type: object
      properties:
        contentDisposition:
          $ref: '#/components/schemas/ContentDisposition'
        entity:
          type: object
        headers:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
        mediaType:
          type: object
          properties:
            type:
              type: string
            subtype:
              type: string
            parameters:
              type: object
              additionalProperties:
                type: string
            wildcardType:
              type: boolean
            wildcardSubtype:
              type: boolean
        messageBodyWorkers:
          $ref: '#/components/schemas/MessageBodyWorkers'
        parent:
          $ref: '#/components/schemas/MultiPart'
        providers:
          type: object
        formDataContentDisposition:
          $ref: '#/components/schemas/FormDataContentDisposition'
        simple:
          type: boolean
        name:
          type: string
        value:
          type: string
        parameterizedHeaders:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/ParameterizedHeader'
    DeleteSecretForm:
      required:
      - key
      - params
      - siteId
      type: object
      properties:
        key:
          type: string
        siteId:
          type: string
        params:
          uniqueItems: true
          type: array
          items:
            type: string
    ExportSecretForm:
      required:
      - appKeysBySite
      - exportAll
      - password
      type: object
      properties:
        password:
          type: string
        exportAll:
          type: boolean
        appKeys:
          type: object
          additionalProperties:
            uniqueItems: true
            type: array
            items:
              type: string
          writeOnly: true
        appKeysBySite:
          type: object
          additionalProperties:
            uniqueItems: true
            type: array
            items:
              type: string
    FormDataContentDisposition:
      type: object
      properties:
        type:
          type: string
        parameters:
          type: object
          additionalProperties:
            type: string
        fileName:
          type: string
        creationDate:
          type: string
          format: date-time
        modificationDate:
          type: string
          format: date-time
        readDate:
          type: string
          format: date-time
        size:
          type: integer
          format: int64
        name:
          type: string
    MessageBodyWorkers:
      type: object
    ParameterizedHeader:
      type: object
      properties:
        value:
          type: string
        parameters:
          type: object
          additionalProperties:
            type: string
    ContentDisposition:
      type: object
      properties:
        type:
          type: string
        parameters:
          type: object
          additionalProperties:
            type: string
        fileName:
          type: string
        creationDate:
          type: string
          format: date-time
        modificationDate:
          type: string
          format: date-time
        readDate:
          type: string
          format: date-time
        size:
          type: integer
          format: int64
    FormDataMultiPart:
      type: object
      properties:
        contentDisposition:
          $ref: '#/components/schemas/ContentDisposition'
        entity:
          type: object
        headers:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
        mediaType:
          type: object
          properties:
            type:
              type: string
            subtype:
              type: string
            parameters:
              type: object
              additionalProperties:
                type: string
            wildcardType:
              type: boolean
            wildcardSubtype:
              type: boolean
        messageBodyWorkers:
          $ref: '#/components/schemas/MessageBodyWorkers'
        parent:
          $ref: '#/components/schemas/MultiPart'
        providers:
          type: object
        bodyParts:
          type: array
          items:
            $ref: '#/components/schemas/BodyPart'
        fields:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/FormDataBodyPart'
        parameterizedHeaders:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/ParameterizedHeader'
    BodyPart:
      type: object
      properties:
        contentDisposition:
          $ref: '#/components/schemas/ContentDisposition'
        entity:
          type: object
        headers:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
        mediaType:
          type: object
          properties:
            type:
              type: string
            subtype:
              type: string
            parameters:
              type: object
              additionalProperties:
                type: string
            wildcardType:
              type: boolean
            wildcardSubtype:
              type: boolean
        messageBodyWorkers:
          $ref: '#/components/schemas/MessageBodyWorkers'
        parent:
          $ref: '#/components/schemas/MultiPart'
        providers:
          type: object
        parameterizedHeaders:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/ParameterizedHeader'