The Co-operative Bank Personalization API
Content personalization and persona management
Content personalization and persona management
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-personalization-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 Personalization API
version: '3'
description: Content personalization and persona management
servers:
- url: /
description: dotCMS Server
tags:
- name: Personalization
description: Content personalization and persona management
paths:
/api/v1/personalization/pagepersonas:
post:
tags:
- Personalization
summary: Personalize page containers
description: Copies the current content associated to page containers with default personalization and creates a new set with the specified persona personalization. Requires edit permission on the page.
operationId: personalizePageContainers
requestBody:
description: Personalization form data with page ID and persona tag
content:
application/json:
schema:
$ref: '#/components/schemas/PersonalizationPersonaPageForm'
required: true
responses:
'200':
description: Page containers personalized successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseEntityPersonalizationView'
'400':
description: Bad request - invalid page ID, persona tag, or missing parameters
content:
application/json: {}
'401':
description: Unauthorized - authentication required
content:
application/json: {}
'403':
description: Forbidden - insufficient edit permissions on page
content:
application/json: {}
'404':
description: Page or persona not found
content:
application/json: {}
'500':
description: Internal server error
content:
application/json: {}
/api/v1/personalization/pagepersonas/page/{pageId}/personalization/{personalization}:
delete:
tags:
- Personalization
summary: Delete page personalization
description: Deletes a personalization persona for a page. Can remove any persona personalization for page containers except the default personalization. Requires edit permission on the page.
operationId: personalizePageContainers_1
parameters:
- name: pageId
in: path
description: Page identifier
required: true
schema:
type: string
- name: personalization
in: path
description: Personalization/persona tag to delete
required: true
schema:
type: string
responses:
'200':
description: Page personalization deleted successfully
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseEntityStringView'
'400':
description: Bad request - invalid parameters, trying to delete default personalization, or persona doesn't exist
content:
application/json: {}
'401':
description: Unauthorized - authentication required
content:
application/json: {}
'403':
description: Forbidden - insufficient edit permissions on page
content:
application/json: {}
'404':
description: Page not found
content:
application/json: {}
'500':
description: Internal server error
content:
application/json: {}
/api/personas/layout/{params}:
get:
tags:
- Personalization
operationId: getLayout_5
parameters:
- name: params
in: path
required: true
schema:
pattern: .*
type: string
responses:
default:
description: default response
content:
text/html: {}
summary: Get layout 5
x-summary-source: derived
/api/personas/sites/{id}:
get:
tags:
- Personalization
operationId: list_11
parameters:
- name: id
in: path
required: true
schema:
type: string
responses:
default:
description: default response
content:
application/json:
schema:
type: object
additionalProperties:
$ref: '#/components/schemas/Persona'
application/javascript:
schema:
type: object
additionalProperties:
$ref: '#/components/schemas/Persona'
summary: List 11
x-summary-source: derived
components:
schemas:
ErrorEntity:
type: object
properties:
errorCode:
type: string
message:
type: string
fieldName:
type: string
Pagination:
type: object
properties:
currentPage:
type: integer
format: int32
perPage:
type: integer
format: int32
totalEntries:
type: integer
format: int64
Field:
required:
- clazz
type: object
properties:
fieldContentTypeProperties:
type: array
items:
type: string
enum:
- NAME
- VALUES
- CATEGORIES
- RELATIONSHIPS
- REGEX_CHECK
- HINT
- REQUIRED
- SEARCHABLE
- INDEXED
- LISTED
- UNIQUE
- DEFAULT_VALUE
- DATA_TYPE
clazz:
type: string
discriminator:
propertyName: clazz
UserAPI:
type: object
properties:
unDeletedUsers:
type: array
items:
$ref: '#/components/schemas/User'
systemUser:
$ref: '#/components/schemas/User'
anonymousUser:
$ref: '#/components/schemas/User'
defaultUser:
$ref: '#/components/schemas/User'
anonymousUserNoThrow:
$ref: '#/components/schemas/User'
ResponseEntityPersonalizationView:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/ErrorEntity'
entity:
type: array
items:
type: object
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'
ResponseEntityStringView:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/ErrorEntity'
entity:
type: string
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'
PersonalizationPersonaPageForm:
required:
- pageId
- personaTag
type: object
properties:
pageId:
type: string
personaTag:
type: string
MessageEntity:
type: object
properties:
message:
type: string
Persona:
type: object
properties:
lowIndexPriority:
type: boolean
variantId:
type: string
keyTag:
type: string
tags:
type: string
description:
type: string
name:
type: string
inode:
type: string
identifier:
type: string
archived:
type: boolean
versionType:
type: string
modDate:
type: string
format: date-time
versionId:
type: string
working:
type: boolean
modUser:
type: string
live:
type: boolean
title:
type: string
locked:
type: boolean
permissionId:
type: string
permissionType:
type: string
owner:
type: string
titleImage:
$ref: '#/components/schemas/Field'
folder:
type: string
dotAsset:
type: boolean
persona:
type: boolean
form:
type: boolean
languageVariable:
type: boolean
systemHost:
type: boolean
languageId:
type: integer
format: int64
sortOrder:
type: integer
format: int64
fileAsset:
type: boolean
userAPI:
$ref: '#/components/schemas/UserAPI'
htmlpage:
type: boolean
vanityUrl:
type: boolean
structureInode:
type: string
categoryId:
type: string
contentTypeId:
type: string
keyValue:
type: boolean
indexPolicyDependencies:
type: string
enum:
- DEFER
- WAIT_FOR
- FORCE
host:
type: string
new:
type: boolean
type:
type: string
Role:
type: object
properties:
id:
type: string
name:
type: string
description:
type: string
roleKey:
type: string
parent:
type: string
editPermissions:
type: boolean
editUsers:
type: boolean
editLayouts:
type: boolean
locked:
type: boolean
system:
type: boolean
roleChildren:
type: array
items:
type: string
fqn:
type: string
dbfqn:
type: string
user:
type: boolean
User:
type: object
properties:
modificationDate:
type: string
format: date-time
companyId:
type: string
resolution:
type: string
refreshRate:
type: string
defaultUser:
type: boolean
recipientName:
type: string
actualCompanyId:
type: string
female:
type: boolean
passwordExpired:
type: boolean
recipientId:
type: string
userRole:
$ref: '#/components/schemas/Role'
languageId:
type: string
timeZoneId:
type: string
anonymousUser:
type: boolean
recipientInternetAddress:
type: string
multipleRecipients:
type: boolean
timeZone:
type: object
properties:
id:
type: string
rawOffset:
type: integer
format: int32
dstsavings:
type: integer
format: int32
displayName:
type: string
locale:
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
fullName:
type: string
recipientAddress:
type: string
male:
type: boolean
skinId:
type: string
loginDate:
type: string
format: date-time
loginIP:
type: string
lastLoginDate:
type: string
format: date-time
lastLoginIP:
type: string
createDate:
type: string
format: date-time
deleteDate:
type: string
format: date-time
passwordReset:
type: boolean
smsId:
type: string
aimId:
type: string
icqId:
type: string
msnId:
type: string
ymId:
type: string
favoriteFood:
type: string
favoriteMovie:
type: string
favoriteMusic:
type: string
dottedSkins:
type: boolean
roundedSkins:
type: boolean
greeting:
type: string
layoutIds:
type: string
comments:
type: string
deleteInProgress:
type: boolean
userId:
type: string
emailAddress:
type: string
firstName:
type: string
lastName:
type: string
active:
type: boolean
middleName:
type: string
nickName:
type: string
birthday:
type: string
format: date-time
additionalInfo:
type: object
additionalProperties:
type: object
passwordExpirationDate:
type: string
format: date-time
failedLoginAttempts:
type: integer
format: int32
agreedToTermsOfUse:
type: boolean
passwordEncrypted:
type: boolean
favoriteActivity:
type: string
favoriteBibleVerse:
type: string
password:
type: string
modified:
type: boolean
new:
type: boolean
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)