The Co-operative Bank Content Import API
The Content Import API from The Co-operative Bank — 11 operation(s) for content import.
The Content Import API from The Co-operative Bank — 11 operation(s) for content import.
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-import-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 Import API
version: '3'
servers:
- url: /
description: dotCMS Server
tags:
- name: Content Import
paths:
/api/v1/content/_import/abandoned:
get:
tags:
- Content Import
summary: Retrieves abandoned content import jobs
description: Fetches a paginated list of abandoned content import jobs (jobs with state ABANDONED). Results can be paginated using query parameters.
operationId: getAbandonedContentImportJobs
parameters:
- name: page
in: query
description: Page number to retrieve (1-based indexing).
schema:
type: integer
format: int32
default: 1
- name: pageSize
in: query
description: Number of records per page.
schema:
type: integer
format: int32
default: 20
responses:
'200':
description: Successfully retrieved the paginated list of abandoned content import jobs.
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseEntityJobPaginatedResultView'
'401':
description: 'Unauthorized: Invalid or missing user authentication.'
'403':
description: 'Forbidden: User does not have necessary permissions to view jobs.'
'500':
description: 'Internal Server Error: An unexpected error occurred while retrieving jobs.'
/api/v1/content/_import/active:
get:
tags:
- Content Import
summary: Retrieves active content import jobs
description: Fetches a paginated list of active content import jobs (jobs with state NEW, PROCESSING, or WAITING). Results can be paginated using query parameters.
operationId: getActiveContentImportJobs
parameters:
- name: page
in: query
description: Page number to retrieve (1-based indexing).
schema:
type: integer
format: int32
default: 1
- name: pageSize
in: query
description: Number of records per page.
schema:
type: integer
format: int32
default: 20
responses:
'200':
description: Successfully retrieved the paginated list of active content import jobs.
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseEntityJobPaginatedResultView'
'401':
description: 'Unauthorized: Invalid or missing user authentication.'
'403':
description: 'Forbidden: User does not have necessary permissions to view jobs.'
'500':
description: 'Internal Server Error: An unexpected error occurred while retrieving jobs.'
/api/v1/content/_import/{jobId}/cancel:
post:
tags:
- Content Import
summary: Cancel a content import job
description: Requests cancellation of a specific content import job identified by its ID. Note that cancellation is asynchronous and may not be immediate.
operationId: cancelContentImportJob
parameters:
- name: jobId
in: path
description: The unique identifier (UUID) of the job to be cancelled.
required: true
schema:
type: string
format: uuid
example: e6d9bae8-657b-4e2f-8524-c0222db66355
responses:
'200':
description: Cancellation request successfully sent to the job.
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseEntityStringView'
example:
entity: Cancellation request successfully sent to job e6d9bae8-657b-4e2f-8524-c0222db66355
errors: []
i18nMessagesMap: {}
messages: []
pagination: null
permissions: []
'401':
description: 'Unauthorized: Invalid or missing user authentication.'
'403':
description: 'Forbidden: User does not have permissions to cancel the specified job.'
'404':
description: 'Not Found: Job with the specified ID could not be found or is already completed/cancelled.'
'500':
description: 'Internal Server Error: An unexpected error occurred while attempting to cancel the job.'
/api/v1/content/_import/canceled:
get:
tags:
- Content Import
summary: Retrieves canceled content import jobs
description: Fetches a paginated list of canceled content import jobs (jobs with state CANCELED). Results can be paginated using query parameters.
operationId: getCanceledContentImportJobs
parameters:
- name: page
in: query
description: Page number to retrieve (1-based indexing).
schema:
type: integer
format: int32
default: 1
- name: pageSize
in: query
description: Number of records per page.
schema:
type: integer
format: int32
default: 20
responses:
'200':
description: Successfully retrieved the paginated list of canceled content import jobs.
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseEntityJobPaginatedResultView'
'401':
description: 'Unauthorized: Invalid or missing user authentication.'
'403':
description: 'Forbidden: User does not have necessary permissions to view jobs.'
'500':
description: 'Internal Server Error: An unexpected error occurred while retrieving jobs.'
/api/v1/content/_import/completed:
get:
tags:
- Content Import
summary: Retrieves completed content import jobs
description: Fetches a paginated list of completed content import jobs (jobs with state COMPLETED). Results can be paginated using query parameters.
operationId: getCompletedContentImportJobs
parameters:
- name: page
in: query
description: Page number to retrieve (1-based indexing).
schema:
type: integer
format: int32
default: 1
- name: pageSize
in: query
description: Number of records per page.
schema:
type: integer
format: int32
default: 20
responses:
'200':
description: Successfully retrieved the paginated list of completed content import jobs.
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseEntityJobPaginatedResultView'
'401':
description: 'Unauthorized: Invalid or missing user authentication.'
'403':
description: 'Forbidden: User does not have necessary permissions to view jobs.'
'500':
description: 'Internal Server Error: An unexpected error occurred while retrieving jobs.'
/api/v1/content/_import/failed:
get:
tags:
- Content Import
summary: Retrieves failed content import jobs
description: Fetches a paginated list of failed content import jobs (jobs with state FAILED). Results can be paginated using query parameters.
operationId: getFailedContentImportJobs
parameters:
- name: page
in: query
description: Page number to retrieve (1-based indexing).
schema:
type: integer
format: int32
default: 1
- name: pageSize
in: query
description: Number of records per page.
schema:
type: integer
format: int32
default: 20
responses:
'200':
description: Successfully retrieved the paginated list of failed content import jobs.
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseEntityJobPaginatedResultView'
'401':
description: 'Unauthorized: Invalid or missing user authentication.'
'403':
description: 'Forbidden: User does not have necessary permissions to view jobs.'
'500':
description: 'Internal Server Error: An unexpected error occurred while retrieving jobs.'
/api/v1/content/_import/{jobId}:
get:
tags:
- Content Import
summary: Retrieves the status of a content import job
description: Fetches the detailed current status of a specific content import job identified by its ID.
operationId: getJobStatus
parameters:
- name: jobId
in: path
description: The unique identifier (UUID) of the job whose status is to be retrieved.
required: true
schema:
type: string
format: uuid
example: e6d9bae8-657b-4e2f-8524-c0222db66355
responses:
'200':
description: Successfully retrieved job status. The entity contains detailed information about the job.
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseEntityJobView'
'401':
description: 'Unauthorized: Invalid or missing user authentication.'
'403':
description: 'Forbidden: User does not have permissions to view the specified job.'
'404':
description: 'Not Found: Job with the specified ID could not be found.'
'500':
description: 'Internal Server Error: An unexpected error occurred while retrieving the job status.'
/api/v1/content/_import:
get:
tags:
- Content Import
summary: Retrieves content import jobs
description: Fetches a paginated list of all content import jobs regardless of state. Results can be paginated using query parameters.
operationId: getContentImportJobs
parameters:
- name: page
in: query
description: Page number to retrieve (1-based indexing).
schema:
type: integer
format: int32
default: 1
- name: pageSize
in: query
description: Number of records per page.
schema:
type: integer
format: int32
default: 20
responses:
'200':
description: Successfully retrieved the paginated list of content import jobs.
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseEntityJobPaginatedResultView'
'401':
description: 'Unauthorized: Invalid or missing user authentication.'
'403':
description: 'Forbidden: User does not have necessary permissions to view jobs.'
'500':
description: 'Internal Server Error: An unexpected error occurred while retrieving jobs.'
post:
tags:
- Content Import
summary: Imports content from a CSV file
description: Creates and enqueues a new content import job. Requires a CSV file and a JSON string representing import parameters.
operationId: importContent
requestBody:
description: "This endpoint accepts a `multipart/form-data` request with two fields:\n\n| **Field** | **Type** | **Required** | **Description** |\n|-----------|----------|--------------|-----------------|\n| `file` | File | ✅ Yes | The CSV file to import. Must contain content rows and match the expected structure for the content type. |\n| `form` | String | ✅ Yes | A JSON string containing the import parameters. See structure below. |\n\n**`form` field structure:**\n\n| **Property** | **Type** | **Required** | **Default** | **Description** |\n|----------------------|------------|--------------|-------------|-----------------|\n| `contentType` | String | ✅ Yes | – | Content Type variable or ID to import data into. |\n| `language` | String | ❌ No | Default language | Language code (e.g., `en-US`) or language ID. |\n| `workflowActionId` | String | ✅ Yes | – | Workflow Action UUID to apply to imported content. |\n| `fields` | String[] | ❌ No | – | List of field variables or IDs used as keys for content updates. |\n| `stopOnError` | Boolean | ❌ No | `false` | Whether to stop import on first validation error. |\n| `commitGranularity` | Integer | ❌ No | `100` | Number of rows to commit in each transaction batch. |\n\n**Example `form` value:**\n\n```json\n{\n \"contentType\": \"webPageContent\",\n \"language\": \"en-US\",\n \"workflowActionId\": \"b9d89c80-3d88-4311-8365-187323c96436\",\n \"fields\": [\"title\"],\n \"stopOnError\": false,\n \"commitGranularity\": 100\n}\n```"
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/ContentImportParamsSchema'
required: true
responses:
'200':
description: Content import job successfully created and enqueued.
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseEntityJobStatusView'
'400':
description: 'Bad Request: Invalid parameters or malformed request (e.g., missing file, invalid JSON in ''form'', file not CSV).'
'401':
description: 'Unauthorized: Invalid or missing user authentication.'
'403':
description: 'Forbidden: User does not have necessary permissions for content import or workflow action.'
'404':
description: 'Not Found: Specified Content Type or Language could not be found.'
'500':
description: 'Internal Server Error: An unexpected error occurred during job creation or processing.'
/api/v1/content/_import/{jobId}/monitor:
get:
tags:
- Content Import
summary: Monitor a content import job in real-time
description: Establishes a Server-Sent Events (SSE) connection to monitor the progress of a specific content import job in real-time. This endpoint will continuously send updates as the job progresses, including status changes and completion information.
operationId: monitorContentImportJobs
parameters:
- name: jobId
in: path
description: The unique identifier (UUID) of the job whose status is to be retrieved.
required: true
schema:
type: string
format: uuid
example: e6d9bae8-657b-4e2f-8524-c0222db66355
responses:
'200':
description: Server-Sent Events stream established successfully. Events will be sent as the job progresses.
content:
text/event-stream:
schema:
$ref: '#/components/schemas/EventOutput'
'401':
description: 'Unauthorized: Invalid or missing user authentication.'
'403':
description: 'Forbidden: User does not have permissions to monitor the specified job.'
'404':
description: 'Not Found: Job with the specified ID could not be found.'
'500':
description: 'Internal Server Error: An unexpected error occurred while establishing the monitoring connection.'
/api/v1/content/_import/successful:
get:
tags:
- Content Import
summary: Retrieves successful content import jobs
description: Fetches a paginated list of successful content import jobs (jobs with state COMPLETED and successful result). Results can be paginated using query parameters.
operationId: getSuccessfulContentImportJobs
parameters:
- name: page
in: query
description: Page number to retrieve (1-based indexing).
schema:
type: integer
format: int32
default: 1
- name: pageSize
in: query
description: Number of records per page.
schema:
type: integer
format: int32
default: 20
responses:
'200':
description: Successfully retrieved the paginated list of successful content import jobs.
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseEntityJobPaginatedResultView'
'401':
description: 'Unauthorized: Invalid or missing user authentication.'
'403':
description: 'Forbidden: User does not have necessary permissions to view jobs.'
'500':
description: 'Internal Server Error: An unexpected error occurred while retrieving jobs.'
/api/v1/content/_import/_validate:
post:
tags:
- Content Import
summary: Validates content import from a CSV file
description: Creates and enqueues a content import job in preview mode. This validates the CSV data against the specified Content Type, language, and workflow action without actually importing content.
operationId: validateContentImport
requestBody:
description: "This endpoint accepts a `multipart/form-data` request with two fields:\n\n| **Field** | **Type** | **Required** | **Description** |\n|-----------|----------|--------------|-----------------|\n| `file` | File | ✅ Yes | The CSV file to import. Must contain content rows and match the expected structure for the content type. |\n| `form` | String | ✅ Yes | A JSON string containing the import parameters. See structure below. |\n\n**`form` field structure:**\n\n| **Property** | **Type** | **Required** | **Default** | **Description** |\n|----------------------|------------|--------------|-------------|-----------------|\n| `contentType` | String | ✅ Yes | – | Content Type variable or ID to import data into. |\n| `language` | String | ❌ No | Default language | Language code (e.g., `en-US`) or language ID. |\n| `workflowActionId` | String | ✅ Yes | – | Workflow Action UUID to apply to imported content. |\n| `fields` | String[] | ❌ No | – | List of field variables or IDs used as keys for content updates. |\n| `stopOnError` | Boolean | ❌ No | `false` | Whether to stop import on first validation error. |\n| `commitGranularity` | Integer | ❌ No | `100` | Number of rows to commit in each transaction batch. |\n\n**Example `form` value:**\n\n```json\n{\n \"contentType\": \"webPageContent\",\n \"language\": \"en-US\",\n \"workflowActionId\": \"b9d89c80-3d88-4311-8365-187323c96436\",\n \"fields\": [\"title\"],\n \"stopOnError\": false,\n \"commitGranularity\": 100\n}\n```"
content:
multipart/form-data:
schema:
$ref: '#/components/schemas/ContentImportParamsSchema'
required: true
responses:
'200':
description: Content import validation job successfully created and enqueued.
content:
application/json:
schema:
$ref: '#/components/schemas/ResponseEntityJobStatusView'
example:
entity:
jobId: e6d9bae8-657b-4e2f-8524-c0222db66355
statusUrl: http://localhost:8080/api/v1/_import/e6d9bae8-657b-4e2f-8524-c0222db66355
errors: []
i18nMessagesMap: {}
messages: []
pagination: null
permissions: []
'400':
description: 'Bad Request: Invalid parameters or malformed request (e.g., missing file, invalid JSON in ''form'', file not CSV).'
'401':
description: 'Unauthorized: Invalid or missing user authentication.'
'403':
description: 'Forbidden: User does not have necessary permissions for validation or workflow action.'
'404':
description: 'Not Found: Specified Content Type or Language could not be found.'
'500':
description: 'Internal Server Error: An unexpected error occurred during job creation or processing.'
components:
schemas:
ErrorEntity:
type: object
properties:
errorCode:
type: string
message:
type: string
fieldName:
type: string
JobStatusResponse:
type: object
properties:
jobId:
type: string
statusUrl:
type: string
Pagination:
type: object
properties:
currentPage:
type: integer
format: int32
perPage:
type: integer
format: int32
totalEntries:
type: integer
format: int64
JobResult:
type: object
properties:
errorDetail:
$ref: '#/components/schemas/ErrorDetail'
metadata:
type: object
additionalProperties:
type: object
ErrorDetail:
type: object
properties:
message:
type: string
exceptionClass:
type: string
stackTrace:
type: string
timestamp:
type: string
format: date-time
processingStage:
type: string
ResponseEntityJobView:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/ErrorEntity'
entity:
$ref: '#/components/schemas/Job'
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'
JobPaginatedResult:
type: object
properties:
total:
type: integer
format: int64
page:
type: integer
format: int32
pageSize:
type: integer
format: int32
jobs:
type: array
properties:
empty:
type: boolean
first:
$ref: '#/components/schemas/Job'
last:
$ref: '#/components/schemas/Job'
items:
$ref: '#/components/schemas/Job'
Job:
type: object
properties:
id:
type: string
queueName:
type: string
state:
type: string
enum:
- PENDING
- RUNNING
- SUCCESS
- FAILED
- FAILED_PERMANENTLY
- ABANDONED
- ABANDONED_PERMANENTLY
- CANCEL_REQUESTED
- CANCELLING
- CANCELED
executionNode:
type: string
createdAt:
type: string
format: date-time
startedAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
completedAt:
type: string
format: date-time
result:
$ref: '#/components/schemas/JobResult'
parameters:
type: object
properties:
empty:
type: boolean
additionalProperties:
type: object
retryCount:
type: integer
format: int32
progress:
type: number
format: float
EventOutput:
type: object
properties:
type:
type: object
properties:
typeName:
type: string
closed:
type: boolean
ResponseEntityJobStatusView:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/ErrorEntity'
entity:
$ref: '#/components/schemas/JobStatusResponse'
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'
ResponseEntityJobPaginatedResultView:
type: object
properties:
errors:
type: array
items:
$ref: '#/components/schemas/ErrorEntity'
entity:
$ref: '#/components/schemas/JobPaginatedResult'
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'
ContentImportParamsSchema:
required:
- file
- form
type: object
properties:
file:
type: string
description: The CSV file to import.
format: binary
form:
type: string
description: JSON string representing import settings.
example: "{\n \"contentType\": \"activity\",\n \"language\": \"en-US\",\n \"workflowActionId\": \"b9d89c80-3d88-4311-8365-187323c96436\",\n \"fields\": [\"title\"]\n \"stopOnError\":false \n \"commitGranularity\": 100\n}"
description: Schema for content import parameters.
MessageEntity:
type: object
properties:
message:
type: string
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)