The Co-operative Bank Content Delivery API
Content retrieval and manipulation endpoints
Content retrieval and manipulation endpoints
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/co-operative-bank:co-operative-bank-content-delivery-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: dotCMS REST Content Delivery API
version: '3'
description: Content retrieval and manipulation endpoints
servers:
- url: /
description: dotCMS Server
tags:
- name: Content Delivery
description: Content retrieval and manipulation endpoints
paths:
/api/content/canLock/{params}:
put:
tags:
- Content Delivery
summary: Check if a contentlet can be locked (deprecated)
description: Checks whether the current user can lock a contentlet identified by inode or identifier. Returns lock capability information including current lock status and lock owner details. Parameters are passed as semicolon-delimited path segments (e.g., id:abc123/language:1). This endpoint is deprecated - use the v1 ContentResource canLockContent endpoint instead.
operationId: canLockContentLegacy
parameters:
- name: params
in: path
description: Semicolon-delimited parameters (e.g., inode:abc123/language:1/live:true)
required: true
schema:
pattern: .*
type: string
responses:
'200':
description: Lock capability check completed successfully
content:
application/json:
schema:
type: object
description: Lock capability check result
'401':
description: Unauthorized access
content:
application/json: {}
'403':
description: Forbidden - insufficient permissions
content:
application/json: {}
'404':
description: Contentlet not found
content:
application/json: {}
deprecated: true
/api/content/{params}:
get:
tags:
- Content Delivery
summary: Retrieve content by ID, inode, query, or related content
description: 'Retrieves contentlets using various lookup strategies. Parameters use a slash-delimited key:value format in the URL path (e.g., /api/content/inode:abc123/live:true/language:1). Supported parameters include: id (identifier), inode, query (Lucene query), type (json or xml), orderby, limit, offset, language, live, depth (0-3 for relationship traversal), render (true to render widgets), related (ContentType.Field:identifier format), and allCategoriesInfo. When ''depth'' is set: 0 returns related content identifiers, 1 returns full related content objects, 2 returns related content with their related identifiers, 3 returns related content with their fully hydrated related content.'
operationId: getContentLegacy
parameters:
- name: params
in: path
description: Slash-delimited key:value parameters (e.g., inode:abc123/live:true/language:1)
required: true
schema:
pattern: .*
type: string
responses:
'200':
description: Content retrieved successfully
content:
application/json:
schema:
type: object
description: Content data in the requested format
'400':
description: Invalid parameters or malformed query
content:
application/json: {}
'401':
description: Unauthorized access
content:
application/json: {}
'403':
description: Forbidden - insufficient permissions
content:
application/json: {}
'404':
description: Content not found
content:
application/json: {}
'500':
description: Internal server error
content:
application/json: {}
put:
tags:
- Content Delivery
summary: Create or update content via PUT (deprecated)
description: Creates or updates a contentlet using JSON, XML, or form-encoded data. This endpoint is deprecated - use the v1 WorkflowResource fireActionDefault endpoint instead.
operationId: singlePutContent
parameters:
- name: params
in: path
description: Slash-delimited key:value parameters for content operation
required: true
schema:
pattern: .*
type: string
requestBody:
description: Content data in JSON, XML, or form format
content:
application/json: {}
application/xml: {}
application/x-www-form-urlencoded: {}
required: true
responses:
'200':
description: Contentlet created or updated successfully
content:
application/json:
schema:
type: object
description: Created or updated contentlet data
'400':
description: Bad request - invalid input data
content:
application/json: {}
'401':
description: Unauthorized access
content:
application/json: {}
'403':
description: Forbidden - insufficient permissions
content:
application/json: {}
deprecated: true
post:
tags:
- Content Delivery
summary: Create content via POST (deprecated)
description: Creates a contentlet using JSON, XML, or form-encoded data. This endpoint is deprecated - use the v1 WorkflowResource fireActionDefault endpoint instead.
operationId: singlePostContent
parameters:
- name: params
in: path
description: Slash-delimited key:value parameters for content operation
required: true
schema:
pattern: .*
type: string
requestBody:
description: Content data in JSON, XML, or form format
content:
application/json: {}
application/xml: {}
application/x-www-form-urlencoded: {}
required: true
responses:
'200':
description: Contentlet created successfully
content:
application/json:
schema:
type: object
description: Created or updated contentlet data
'400':
description: Bad request - invalid input data
content:
application/json: {}
'401':
description: Unauthorized access
content:
application/json: {}
'403':
description: Forbidden - insufficient permissions
content:
application/json: {}
deprecated: true
/api/content/indexcount/{query}:
get:
tags:
- Content Delivery
summary: Count content matching a Lucene query
description: Performs an index count using the specified Lucene query and returns the total number of matching contentlets as a plain text string.
operationId: indexCountContent
parameters:
- name: query
in: path
description: Lucene query string to count matching content
required: true
schema:
type: string
- name: type
in: query
description: Response format type (optional)
schema:
type: string
- name: callback
in: query
description: JSONP callback function name (optional)
schema:
type: string
responses:
'200':
description: Count of matching contentlets returned successfully
content:
text/plain:
schema:
type: string
description: The count of contentlets matching the query
'400':
description: Invalid query syntax
content:
application/json: {}
'401':
description: Unauthorized access
content:
application/json: {}
'403':
description: Forbidden - insufficient permissions
content:
application/json: {}
'500':
description: Internal server error during count operation
content:
application/json: {}
/api/content/indexsearch/{query}/sortby/{sortby}/limit/{limit}/offset/{offset}:
get:
tags:
- Content Delivery
summary: Search content index by Lucene query
description: Performs an index search using the Lucene query and returns an array of JSON objects, each containing the inode and identifier of matching content.
operationId: indexSearchContent
parameters:
- name: query
in: path
description: Lucene query string to search the index
required: true
schema:
type: string
- name: sortby
in: path
description: Field name to sort results by
required: true
schema:
type: string
- name: limit
in: path
description: Maximum number of results to return
required: true
schema:
type: integer
format: int32
- name: offset
in: path
description: Number of results to skip for pagination
required: true
schema:
type: integer
format: int32
- name: type
in: query
description: Response format type (optional)
schema:
type: string
- name: callback
in: query
description: JSONP callback function name (optional)
schema:
type: string
responses:
'200':
description: Index search results returned successfully
content:
application/json:
schema:
type: object
description: Array of content identifiers or inodes matching the search criteria
'400':
description: Invalid query syntax or parameters
content:
application/json: {}
'401':
description: Unauthorized access
content:
application/json: {}
'403':
description: Forbidden - insufficient permissions
content:
application/json: {}
'500':
description: Internal server error during index search
content:
application/json: {}
/api/content/lock/{params}:
put:
tags:
- Content Delivery
summary: Lock a contentlet (deprecated)
description: Locks a contentlet identified by inode or identifier to prevent concurrent edits. Parameters are passed as semicolon-delimited path segments (e.g., id:abc123/language:1). This endpoint is deprecated - use the v1 ContentResource lockContent endpoint instead.
operationId: lockContentLegacy
parameters:
- name: params
in: path
description: Semicolon-delimited parameters (e.g., inode:abc123/language:1/live:true)
required: true
schema:
pattern: .*
type: string
responses:
'200':
description: Contentlet locked successfully
content:
application/json:
schema:
type: object
description: Lock status result
'401':
description: Unauthorized access
content:
application/json: {}
'403':
description: Forbidden - insufficient permissions
content:
application/json: {}
'404':
description: Contentlet not found
content:
application/json: {}
deprecated: true
/api/content/unlock/{params}:
put:
tags:
- Content Delivery
summary: Unlock a contentlet (deprecated)
description: Unlocks a previously locked contentlet identified by inode or identifier. Parameters are passed as semicolon-delimited path segments (e.g., id:abc123/language:1). This endpoint is deprecated - use the v1 ContentResource unlockContent endpoint instead.
operationId: unlockContentLegacy
parameters:
- name: params
in: path
description: Semicolon-delimited parameters (e.g., inode:abc123/language:1/live:true)
required: true
schema:
pattern: .*
type: string
responses:
'200':
description: Contentlet unlocked successfully
content:
application/json:
schema:
type: object
description: Unlock operation result
'401':
description: Unauthorized access
content:
application/json: {}
'403':
description: Forbidden - insufficient permissions
content:
application/json: {}
'404':
description: Contentlet not found
content:
application/json: {}
deprecated: true
x-provenance:
method: harvested
publisher: The Co-operative Bank
source: https://www.developer.co-operativebank.co.uk/api/openapi.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)