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