dotCMS Environment API

Publishing environment management and configuration

Operations 11

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/environments/endpoints List all push publishing endpoints · Returns the endpoints #
Ask an LLM
“Which push publishing endpoints are configured across all environments?”
“What receiving servers can I push content to?”
Tell an agent
List every push publishing endpoint.
Show all configured receiver endpoints.
POST /api/v1/environments/endpoints Add a push publishing endpoint · Creates an endpoint #
Ask an LLM
“How do I add a receiving server to a push publishing environment?”
“Can I set an authorization token when creating an endpoint?”
Tell an agent
Create endpoint {name} at {protocol}://{address}:{port} in environment {environmentId}.
Add a new receiver {name} to environment {environmentId} at host {address} port {port} over {protocol}.
PUT /api/v1/environments/endpoints/{id} Update a push publishing endpoint · Updates an endpoint #
Ask an LLM
“How do I change the address or port of an existing push endpoint?”
“Can I disable an endpoint without deleting it?”
Tell an agent
Update endpoint {id} to {name} at {protocol}://{address}:{port} in environment {environmentId}.
Set enabled to {enabled} on existing endpoint {id} named {name} in environment {environmentId}, host {address}:{port} via {protocol}.
DELETE /api/v1/environments/endpoints/{id} Delete a push publishing endpoint · Deletes an endpoint #
Ask an LLM
“How do I remove a receiving server from push publishing?”
“Can I delete one endpoint and keep its environment?”
Tell an agent destructive · confirm first
Delete endpoint {id}.
Remove push receiver {id} from its environment.
GET /api/v1/environments/endpoints/{endpointId} Get one push publishing endpoint · Returns the endpoint by id #
Ask an LLM
“How do I see the settings of a single push endpoint?”
“What address and protocol does a given endpoint use?”
Tell an agent
Get endpoint {endpointId}.
Show the configuration of receiver {endpointId}.
GET /api/v1/environments/endpoints/environment/{environmentId} List endpoints in one environment · Returns the endpoints #
Ask an LLM
“Which endpoints belong to a specific push publishing environment?”
“How many receiving servers does an environment have?”
Tell an agent
List endpoints in environment {environmentId}.
Show receivers configured for environment {environmentId}.
GET /api/environment List all push publishing environments · Returns the environments #
Ask an LLM
“What push publishing environments are set up?”
“Which environments can content be pushed to?”
Tell an agent
List all publishing environments.
Show every environment I could push to.
POST /api/environment Create a push publishing environment · Creates an environment #
Ask an LLM
“How do I create a new push publishing environment?”
“Can I restrict who is allowed to send to an environment when creating it?”
Tell an agent
Create environment {name} with push mode {pushMode}.
Set up environment {name} using {pushMode} and allow {whoCanSend} to send.
PUT /api/environment/{id} Update a push publishing environment · Updates an environment #
Ask an LLM
“How do I rename an environment or change its push mode?”
“Can I change who can send to an existing environment?”
Tell an agent
Update environment {id} to name {name} and push mode {pushMode}.
Change who can send to existing environment {id} to {whoCanSend}, keeping name {name} and mode {pushMode}.
DELETE /api/environment/{id} Delete a push publishing environment · Deletes an environment #
Ask an LLM
“How do I delete a whole push publishing environment?”
“What happens to an environment's endpoints when I delete it?”
Tell an agent destructive · confirm first
Delete environment {id}.
Remove push publishing environment {id}.
GET /api/environment/loadenvironments/{params} Load environments for the push dialog (legacy) · Load environments #
Ask an LLM
“Which environments does the legacy push publish dialog offer me?”
“How does the old loadenvironments call return environments I can send to?”
Tell an agent
Load sendable environments with the legacy call for {params}.
Get the push dialog environment list using {params}.

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-environment-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-environment-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: dotCMS REST Environment API
  version: '3'
  description: Publishing environment management and configuration
servers:
- url: /
  description: dotCMS Server
tags:
- name: Environment
  description: Publishing environment management and configuration
paths:
  /api/v1/environments/endpoints:
    get:
      tags:
      - Environment
      summary: Returns the endpoints
      operationId: getEndpoints
      responses:
        '200':
          description: Collection of environments.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityEndpointsView'
    post:
      tags:
      - Environment
      summary: Creates an endpoint
      operationId: create
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/EndpointForm'
      responses:
        '200':
          description: If creation is successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityEndpointView'
        '403':
          description: If the user is not an admin or access to the configuration layout or does have permission, it will return a 403.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenException'
        '400':
          description: If the endpoint already exits
          content:
            application/json:
              schema:
                type: string
  /api/v1/environments/endpoints/{id}:
    put:
      tags:
      - Environment
      summary: Updates an endpoint
      operationId: update
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/EndpointForm'
      responses:
        '200':
          description: If update is success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityEndpointView'
        '403':
          description: If the user is not an admin or access to the configuration layout or does have permission, it will return a 403.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenException'
        '400':
          description: If the environment already exits
          content:
            application/json:
              schema:
                type: string
    delete:
      tags:
      - Environment
      summary: Deletes an endpoint
      operationId: delete_3
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: If deletion is successfully endpoint.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityBooleanView'
        '403':
          description: If the user is not an admin or access to the configuration layout or does have permission, it will return a 403.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenException'
        '404':
          description: If the endpoint does not exits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DoesNotExistException'
  /api/v1/environments/endpoints/{endpointId}:
    get:
      tags:
      - Environment
      summary: Returns the endpoint by id
      operationId: getEndpoint
      parameters:
      - name: endpointId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Collection of environments.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityEndpointView'
  /api/v1/environments/endpoints/environment/{environmentId}:
    get:
      tags:
      - Environment
      summary: Returns the endpoints
      operationId: getEndpointsByEnvironmentId
      parameters:
      - name: environmentId
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Collection of environments.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityEndpointsView'
  /api/environment:
    get:
      tags:
      - Environment
      summary: Returns the environments
      operationId: loadAllEnvironments
      responses:
        '200':
          description: Collection of environments.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityEnvironmentsView'
    post:
      tags:
      - Environment
      summary: Creates an environment
      operationId: create_1
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/EnvironmentForm'
      responses:
        '200':
          description: If creation is successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityEnvironmentView'
        '403':
          description: If the user is not an admin or access to the configuration layout or does have permission, it will return a 403.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenException'
        '400':
          description: If the environment already exits
          content:
            application/json:
              schema:
                type: string
  /api/environment/{id}:
    put:
      tags:
      - Environment
      summary: Updates an environment
      operationId: update_1
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/EnvironmentForm'
      responses:
        '200':
          description: If update is success.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityEnvironmentView'
        '403':
          description: If the user is not an admin or access to the configuration layout or does have permission, it will return a 403.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenException'
        '400':
          description: If the environment already exits
          content:
            application/json:
              schema:
                type: string
    delete:
      tags:
      - Environment
      summary: Deletes an environment
      operationId: delete_4
      parameters:
      - name: id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: If deletion is successfully environment.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityBooleanView'
        '403':
          description: If the user is not an admin or access to the configuration layout or does have permission, it will return a 403.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ForbiddenException'
        '404':
          description: If the environment does not exits
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DoesNotExistException'
  /api/environment/loadenvironments/{params}:
    get:
      tags:
      - Environment
      operationId: loadEnvironments
      parameters:
      - name: params
        in: path
        required: true
        schema:
          pattern: .*
          type: string
      responses:
        default:
          description: default response
          content:
            application/json: {}
      summary: Load environments
      x-summary-source: derived
components:
  schemas:
    MessageEntity:
      type: object
      properties:
        message:
          type: string
    EnvironmentForm:
      required:
      - name
      - pushMode
      type: object
      properties:
        name:
          type: string
        pushMode:
          type: string
          enum:
          - PUSH_TO_ONE
          - PUSH_TO_ALL
        whoCanSend:
          type: array
          items:
            type: string
    ResponseEntityEndpointsView:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorEntity'
        entity:
          type: array
          items:
            $ref: '#/components/schemas/PublishingEndPoint'
        messages:
          type: array
          items:
            $ref: '#/components/schemas/MessageEntity'
        i18nMessagesMap:
          type: object
          additionalProperties:
            type: string
        permissions:
          type: array
          items:
            type: string
        pagination:
          $ref: '#/components/schemas/Pagination'
    Pagination:
      type: object
      properties:
        currentPage:
          type: integer
          format: int32
        perPage:
          type: integer
          format: int32
        totalEntries:
          type: integer
          format: int64
    PublishingEndPoint:
      type: object
      properties:
        id:
          type: string
        groupId:
          type: string
        serverName:
          type: object
          properties:
            empty:
              type: boolean
            length:
              type: integer
              format: int32
              writeOnly: true
        address:
          type: string
        port:
          type: string
        protocol:
          type: string
        enabled:
          type: boolean
        authKey:
          type: object
          properties:
            empty:
              type: boolean
            length:
              type: integer
              format: int32
              writeOnly: true
        sending:
          type: boolean
        tokenExpired:
          type: boolean
        tokenInvalid:
          type: boolean
    Environment:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        pushToAll:
          type: boolean
        permissionId:
          type: string
        owner:
          type: string
    ResponseEntityEndpointView:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorEntity'
        entity:
          $ref: '#/components/schemas/PublishingEndPoint'
        messages:
          type: array
          items:
            $ref: '#/components/schemas/MessageEntity'
        i18nMessagesMap:
          type: object
          additionalProperties:
            type: string
        permissions:
          type: array
          items:
            type: string
        pagination:
          $ref: '#/components/schemas/Pagination'
    ResponseEntityBooleanView:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorEntity'
        entity:
          type: boolean
        messages:
          type: array
          items:
            $ref: '#/components/schemas/MessageEntity'
        i18nMessagesMap:
          type: object
          additionalProperties:
            type: string
        permissions:
          type: array
          items:
            type: string
        pagination:
          $ref: '#/components/schemas/Pagination'
    ErrorEntity:
      type: object
      properties:
        errorCode:
          type: string
        message:
          type: string
        fieldName:
          type: string
    EndpointForm:
      required:
      - address
      - environmentId
      - name
      - port
      - protocol
      type: object
      properties:
        name:
          type: string
        protocol:
          type: string
        address:
          type: string
        port:
          type: string
        authorizationToken:
          type: string
        enabled:
          type: boolean
        sending:
          type: boolean
        environmentId:
          type: string
    ResponseEntityEnvironmentsView:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorEntity'
        entity:
          type: array
          items:
            $ref: '#/components/schemas/Environment'
        messages:
          type: array
          items:
            $ref: '#/components/schemas/MessageEntity'
        i18nMessagesMap:
          type: object
          additionalProperties:
            type: string
        permissions:
          type: array
          items:
            type: string
        pagination:
          $ref: '#/components/schemas/Pagination'
    ResponseEntityEnvironmentView:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorEntity'
        entity:
          $ref: '#/components/schemas/Environment'
        messages:
          type: array
          items:
            $ref: '#/components/schemas/MessageEntity'
        i18nMessagesMap:
          type: object
          additionalProperties:
            type: string
        permissions:
          type: array
          items:
            type: string
        pagination:
          $ref: '#/components/schemas/Pagination'
    DoesNotExistException:
      type: object
      properties:
        cause:
          type: object
          properties:
            stackTrace:
              type: array
              items:
                type: object
                properties:
                  classLoaderName:
                    type: string
                  moduleName:
                    type: string
                  moduleVersion:
                    type: string
                  methodName:
                    type: string
                  fileName:
                    type: string
                  lineNumber:
                    type: integer
                    format: int32
                  className:
                    type: string
                  nativeMethod:
                    type: boolean
            message:
              type: string
            localizedMessage:
              type: string
        stackTrace:
          type: array
          items:
            type: object
            properties:
              classLoaderName:
                type: string
              moduleName:
                type: string
              moduleVersion:
                type: string
              methodName:
                type: string
              fileName:
                type: string
              lineNumber:
                type: integer
                format: int32
              className:
                type: string
              nativeMethod:
                type: boolean
        message:
          type: string
        suppressed:
          type: array
          items:
            type: object
            properties:
              stackTrace:
                type: array
                items:
                  type: object
                  properties:
                    classLoaderName:
                      type: string
                    moduleName:
                      type: string
                    moduleVersion:
                      type: string
                    methodName:
                      type: string
                    fileName:
                      type: string
                    lineNumber:
                      type: integer
                      format: int32
                    className:
                      type: string
                    nativeMethod:
                      type: boolean
              message:
                type: string
              localizedMessage:
                type: string
        localizedMessage:
          type: string
    ForbiddenException:
      type: object
      properties:
        cause:
          type: object
          properties:
            stackTrace:
              type: array
              items:
                type: object
                properties:
                  classLoaderName:
                    type: string
                  moduleName:
                    type: string
                  moduleVersion:
                    type: string
                  methodName:
                    type: string
                  fileName:
                    type: string
                  lineNumber:
                    type: integer
                    format: int32
                  className:
                    type: string
                  nativeMethod:
                    type: boolean
            message:
              type: string
            localizedMessage:
              type: string
        stackTrace:
          type: array
          items:
            type: object
            properties:
              classLoaderName:
                type: string
              moduleName:
                type: string
              moduleVersion:
                type: string
              methodName:
                type: string
              fileName:
                type: string
              lineNumber:
                type: integer
                format: int32
              className:
                type: string
              nativeMethod:
                type: boolean
        response:
          type: object
          properties:
            allowedMethods:
              uniqueItems: true
              type: array
              items:
                type: string
            entityTag:
              type: object
              properties:
                value:
                  type: string
                weak:
                  type: boolean
            stringHeaders:
              type: object
              additionalProperties:
                type: array
                items:
                  type: string
            metadata:
              type: object
              additionalProperties:
                type: array
                items:
                  type: object
            mediaType:
              type: object
              properties:
                type:
                  type: string
                subtype:
                  type: string
                parameters:
                  type: object
                  additionalProperties:
                    type: string
                wildcardType:
                  type: boolean
                wildcardSubtype:
                  type: boolean
            statusInfo:
              type: object
              properties:
                statusCode:
                  type: integer
                  format: int32
                reasonPhrase:
                  type: string
                family:
                  type: string
                  enum:
                  - INFORMATIONAL
                  - SUCCESSFUL
                  - REDIRECTION
                  - CLIENT_ERROR
                  - SERVER_ERROR
                  - OTHER
            cookies:
              type: object
              additionalProperties:
                type: object
                properties:
                  name:
                    type: string
                  value:
                    type: string
                  version:
                    type: integer
                    format: int32
                  path:
                    type: string
                  domain:
                    type: string
                  comment:
                    type: string
                  maxAge:
                    type: integer
                    format: int32
                  expiry:
                    type: string
                    format: date-time
                  secure:
                    type: boolean
                  httpOnly:
                    type: boolean
            headers:
              type: object
              additionalProperties:
                type: array
                items:
                  type: object
            date:
              type: string
              format: date-time
            lastModified:
              type: string
              format: date-time
            status:
              type: integer
              format: int32
            entity:
              type: object
            length:
              type: integer
              format: int32
            location:
              type: string
              format: uri
            language:
              type: object
              properties:
                script:
                  type: string
                variant:
                  type: string
                unicodeLocaleAttributes:
                  uniqueItems: true
                  type: array
                  items:
                    type: string
                unicodeLocaleKeys:
                  uniqueItems: true
                  type: array
                  items:
                    type: string
                displayLanguage:
                  type: string
                displayScript:
                  type: string
                displayCountry:
                  type: string
                displayVariant:
                  type: string
                displayName:
                  type: string
                country:
                  type: string
                extensionKeys:
                  uniqueItems: true
                  type: array
                  items:
                    type: string
                iso3Language:
                  type: string
                iso3Country:
                  type: string
                language:
                  type: string
            links:
              uniqueItems: true
              type: array
              items:
                type: object
                properties:
                  uri:
                    type: string
                    format: uri
                  uriBuilder:
                    type: object
                  rel:
                    type: string
                  rels:
                    type: array
                    items:
                      type: string
                  params:
                    type: object
                    additionalProperties:
                      type: string
                  title:
                    type: string
                  type:
                    type: string
        message:
          type: string
        suppressed:
          type: array
          items:
            type: object
            properties:
              stackTrace:
                type: array
                items:
                  type: object
                  properties:
                    classLoaderName:
                      type: string
                    moduleName:
                      type: string
                    moduleVersion:
                      type: string
                    methodName:
                      type: string
                    fileName:
                      type: string
                    lineNumber:
                      type: integer
                      format: int32
                    className:
                      type: string
                    nativeMethod:
                      type: boolean
              message:
                type: string
              localizedMessage:
                type: string
        localizedMessage:
          type: string