dotCMS Templates API

Template design and management

Operations 18

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/vtl/{folder} Run a scripted endpoint's GET Velocity file · Get 6 #
Ask an LLM
“How do I call the get.vtl script in one of my scripting API folders?”
“Can a custom Velocity endpoint folder answer a plain GET request?”
Tell an agent
Call the GET script in Velocity endpoint folder {folder}.
Read data from my custom scripting endpoint {folder} with a GET.
PUT /api/vtl/{folder} Send a multipart PUT to a scripted endpoint · Put multipart 2 #
Ask an LLM
“How do I PUT files as multipart form data to a Velocity endpoint folder?”
“Can my put.vtl script receive uploaded files?”
Tell an agent
Upload form files by PUT to the root of scripting folder {folder}.
Replace data through the put.vtl script in {folder} with these form files.
POST /api/vtl/{folder} Send a multipart POST to a scripted endpoint · Post multipart 2 #
Ask an LLM
“How do I POST a form with files to one of my Velocity scripting folders?”
“Can post.vtl in a custom endpoint handle multipart uploads?”
Tell an agent
Submit this multipart form by POST to the root of scripting folder {folder}.
Submit files to the post.vtl script in {folder}.
DELETE /api/vtl/{folder} Run a scripted endpoint's DELETE Velocity file · Delete 11 #
Ask an LLM
“How do I trigger the delete.vtl script of a custom Velocity endpoint?”
“Can a scripting API folder handle HTTP DELETE requests?”
Tell an agent destructive · confirm first
Send a DELETE to scripting endpoint folder {folder}.
Run the delete.vtl script in {folder}.
PATCH /api/vtl/{folder} Send a multipart PATCH to a scripted endpoint · Patch multipart 2 #
Ask an LLM
“How do I PATCH a scripting endpoint folder with multipart data?”
“Does the patch.vtl script accept form uploads?”
Tell an agent
PATCH scripting folder {folder} with this multipart payload.
Partially update data via the patch.vtl script in {folder}.
GET /api/vtl/{folder}/{pathParam} Run a scripted GET with an extra path segment · Get 7 #
Ask an LLM
“Can my Velocity GET endpoint read an id from a sub-path after the folder?”
“How do I pass a path value to get.vtl in a scripting folder?”
Tell an agent
GET {pathParam} from scripting endpoint {folder}.
Call {folder}'s get.vtl for the item at sub-path {pathParam}.
PUT /api/vtl/{folder}/{pathParam} Multipart PUT to a scripted endpoint sub-path · Put multipart 3 #
Ask an LLM
“How do I PUT multipart data to a specific item path under a Velocity endpoint?”
“Can put.vtl receive both a sub-path value and uploaded files?”
Tell an agent
PUT a multipart upload to {pathParam} under scripting folder {folder}.
Replace item {pathParam} via {folder}'s put.vtl with these files.
POST /api/vtl/{folder}/{pathParam} Multipart POST to a scripted endpoint sub-path · Post multipart 3 #
Ask an LLM
“How do I POST files to a sub-path of a custom Velocity endpoint?”
“Can post.vtl read a path segment as well as form data?”
Tell an agent
POST this multipart form to {pathParam} in scripting folder {folder}.
Submit files for item {pathParam} to {folder}'s post.vtl.
DELETE /api/vtl/{folder}/{pathParam} Scripted DELETE for an item sub-path · Delete 12 #
Ask an LLM
“How do I send a DELETE for a specific item under a Velocity endpoint folder?”
“Can delete.vtl read the id of the item from the URL path?”
Tell an agent destructive · confirm first
DELETE item {pathParam} through scripting folder {folder}.
Run {folder}'s delete.vtl against sub-path {pathParam}.
PATCH /api/vtl/{folder}/{pathParam} Multipart PATCH to a scripted endpoint sub-path · Patch multipart 3 #
Ask an LLM
“How do I PATCH a single item path under a scripting endpoint with form data?”
“Can patch.vtl take a sub-path plus multipart files?”
Tell an agent
PATCH item {pathParam} in scripting folder {folder} with this multipart payload.
Partially update {pathParam} via {folder}'s patch.vtl.
GET /api/vtl/dynamic/{pathParam} Evaluate inline Velocity via GET with a path value · Evaluate inline Velocity code (GET) #
Ask an LLM
“Can I evaluate ad-hoc Velocity code with a GET and a path segment, no .vtl file needed?”
“What role do I need to run inline VTL through the dynamic GET endpoint with a path?”
Tell an agent
Evaluate this inline VTL with a GET to dynamic path {pathParam}.
Run my Velocity snippet via dynamic GET, passing {pathParam} in the URL.
PUT /api/vtl/dynamic/{pathParam} Evaluate inline Velocity via PUT with a path value · Evaluate inline Velocity code (PUT) #
Ask an LLM
“Can I PUT raw Velocity code to the dynamic endpoint along with a path segment?”
“How do I run inline VTL as a PUT that also reads a value from the URL?”
Tell an agent
Evaluate this inline VTL with a PUT to dynamic path {pathParam}.
Run my Velocity code as a dynamic PUT with {pathParam} in the URL.
POST /api/vtl/dynamic/{pathParam} Evaluate inline Velocity via POST with a path value · Evaluate inline Velocity code (POST) #
Ask an LLM
“How do I POST inline Velocity code to the dynamic endpoint with a path segment?”
“Will a dynamic POST with a path return JSON if my code fills $dotJSON?”
Tell an agent
Evaluate this inline VTL with a POST to dynamic path {pathParam}.
Run my Velocity script as a dynamic POST with {pathParam} in the URL.
DELETE /api/vtl/dynamic/{pathParam} Evaluate inline Velocity via DELETE with a path · Evaluate inline Velocity code (DELETE) #
Ask an LLM
“Can I send inline Velocity code with an HTTP DELETE and a path segment?”
“How do I run ad-hoc VTL as a DELETE request on the dynamic endpoint?”
Tell an agent destructive · confirm first
Evaluate this inline VTL with a DELETE to dynamic path {pathParam}.
Run my Velocity code as a dynamic DELETE targeting {pathParam}.
PATCH /api/vtl/dynamic/{pathParam} Evaluate inline Velocity via PATCH with a path · Evaluate inline Velocity code (PATCH) #
Ask an LLM
“Can I PATCH inline Velocity code to the dynamic endpoint with a path segment?”
“How do I run ad-hoc VTL as a PATCH request?”
Tell an agent
Evaluate this inline VTL with a PATCH to dynamic path {pathParam}.
Run my Velocity code as a dynamic PATCH on {pathParam}.
GET /api/vtl/dynamic Evaluate inline Velocity via GET, no path · Evaluate inline Velocity code (GET) #
Ask an LLM
“What's the simplest way to evaluate a Velocity snippet with a bare GET and no sub-path?”
“Can I test VTL code on the dynamic root without writing a .vtl file?”
Tell an agent
Evaluate this Velocity snippet with a GET on the dynamic root.
Run my VTL via the path-less dynamic GET and return the output.
PUT /api/vtl/dynamic Evaluate inline Velocity via PUT, no path · Evaluate inline Velocity code (PUT) #
Ask an LLM
“Can I PUT Velocity code to the dynamic root with no extra path?”
“How do I run inline VTL as a plain PUT on the dynamic endpoint?”
Tell an agent
Evaluate this Velocity snippet with a PUT on the dynamic root.
Run my VTL via the path-less dynamic PUT.
POST /api/vtl/dynamic Evaluate inline Velocity via POST, no path · Evaluate inline Velocity code (POST) #
Ask an LLM
“How do I POST raw VTL to the dynamic root and get the rendered result?”
“Can a path-less dynamic POST return JSON built with $dotJSON?”
Tell an agent
Evaluate this Velocity snippet with a POST on the dynamic root.
Run my VTL via the path-less dynamic POST and return the JSON.

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-templates-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-templates-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: dotCMS REST Templates API
  version: '3'
  description: Template design and management
servers:
- url: /
  description: dotCMS Server
tags:


# --- truncated at 32 KB (35 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/dotcms/refs/heads/main/openapi/dotcms-templates-api-openapi.yml