dotCMS Tag (v1) API

Legacy tag management endpoints (deprecated - use v2 TagResource instead)

Operations 10

GET /api/v1/tags List or search tags (deprecated) #
PUT /api/v1/tags Update a tag (deprecated) #
POST /api/v1/tags Create tags (deprecated) #
DELETE /api/v1/tags/{tagId} Delete a tag by ID (deprecated) #
GET /api/v1/tags/inode/{inode} Get tags by inode (deprecated) #
DELETE /api/v1/tags/inode/{inode} Remove all tag-inode links for an inode (deprecated) #
GET /api/v1/tags/{nameOrId} Get tags by name or ID (deprecated) #
GET /api/v1/tags/user/{userId} Get tags by user ID (deprecated) #
POST /api/v1/tags/import Import tags from file (deprecated) #
PUT /api/v1/tags/tag/{nameOrId}/inode/{inode} Link tags to an inode (deprecated) #

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-tag-v1-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-tag-v1-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: dotCMS REST Tag (v1) API
  version: '3'
  description: Legacy tag management endpoints (deprecated - use v2 TagResource instead)
servers:
- url: /
  description: dotCMS Server
tags:
- name: Tag (v1)
  description: Legacy tag management endpoints (deprecated - use v2 TagResource instead)
paths:
  /api/v1/tags:
    get:
      tags:
      - Tag (v1)
      summary: List or search tags (deprecated)
      description: Lists all tags or searches by name with optional site filtering. If a name is provided, a search-by-name (like) operation is performed. If no matches are found for the site, global tags are searched. This endpoint is deprecated - use v2 TagResource instead.
      operationId: getTagsV1
      parameters:
      - name: name
        in: query
        description: Tag name to search for (supports partial matching)
        schema:
          type: string
      - name: siteId
        in: query
        description: Site identifier to restrict tag search
        schema:
          type: string
      responses:
        '200':
          description: Tags retrieved successfully
          content:
            application/json:
              schema:
                type: object
                description: Map of tag names to RestTag objects
        '401':
          description: Unauthorized - authentication required
          content:
            application/json: {}
      deprecated: true
    put:
      tags:
      - Tag (v1)
      summary: Update a tag (deprecated)
      description: Updates an existing tag's name and site association. Requires tagId, tagName, and siteId in the request body. This endpoint is deprecated - use v2 TagResource instead.
      operationId: updateTagV1
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/UpdateTagForm'
      responses:
        '200':
          description: Tag updated successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityTagsView'
        '400':
          description: Invalid or incomplete tag data provided
          content:
            application/json: {}
        '401':
          description: Unauthorized - authentication required
          content:
            application/json: {}
        '403':
          description: Forbidden - insufficient permissions
          content:
            application/json: {}
        '404':
          description: Tag not found for the given ID
          content:
            application/json: {}
      deprecated: true
    post:
      tags:
      - Tag (v1)
      summary: Create tags (deprecated)
      description: Creates new tags and optionally links them to an owner user. This endpoint is deprecated - use v2 TagResource instead.
      operationId: addTagV1
      requestBody:
        content:
          '*/*':
            schema:
              $ref: '#/components/schemas/TagForm'
      responses:
        '200':
          description: Tags created successfully (may contain partial errors)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityTagOperationView'
        '400':
          description: Invalid tag data provided
          content:
            application/json: {}
        '401':
          description: Unauthorized - authentication required
          content:
            application/json: {}
        '403':
          description: Forbidden - insufficient permissions
          content:
            application/json: {}
      deprecated: true
  /api/v1/tags/{tagId}:
    delete:
      tags:
      - Tag (v1)
      summary: Delete a tag by ID (deprecated)
      description: Deletes a tag by its ID. The user must have EDIT permission on all contentlets associated with the tag. If the tag has no contentlet associations (orphan tag), deletion is allowed. This endpoint is deprecated - use v2 TagResource instead.
      operationId: deleteTagV1
      parameters:
      - name: tagId
        in: path
        description: Tag identifier to delete
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Tag deleted successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityStringView'
        '401':
          description: Unauthorized - authentication required
          content:
            application/json: {}
        '403':
          description: Forbidden - user lacks permission to delete the tag
          content:
            application/json: {}
        '404':
          description: Tag not found for the given ID
          content:
            application/json: {}
      deprecated: true
  /api/v1/tags/inode/{inode}:
    get:
      tags:
      - Tag (v1)
      summary: Get tags by inode (deprecated)
      description: Retrieves all tag-inode associations for a given inode. This endpoint is deprecated - use v2 TagResource instead.
      operationId: findTagsByInodeV1
      parameters:
      - name: inode
        in: path
        description: Inode identifier to retrieve associated tags for
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Tag-inode associations retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityTagInodesView'
        '401':
          description: Unauthorized - authentication required
          content:
            application/json: {}
        '403':
          description: Forbidden - insufficient permissions
          content:
            application/json: {}
        '404':
          description: No tags found for the given inode
          content:
            application/json: {}
      deprecated: true
    delete:
      tags:
      - Tag (v1)
      summary: Remove all tag-inode links for an inode (deprecated)
      description: Breaks the link between an inode and all its associated tags. This endpoint is deprecated - use v2 TagResource instead.
      operationId: deleteTagInodesByInodeV1
      parameters:
      - name: inode
        in: path
        description: Inode identifier to remove all tag associations from
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Tag-inode associations removed successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityStringView'
        '400':
          description: Error removing tag-inode associations
          content:
            application/json: {}
        '401':
          description: Unauthorized - authentication required
          content:
            application/json: {}
        '403':
          description: Forbidden - insufficient permissions
          content:
            application/json: {}
        '404':
          description: No tags found for the given inode
          content:
            application/json: {}
      deprecated: true
  /api/v1/tags/{nameOrId}:
    get:
      tags:
      - Tag (v1)
      summary: Get tags by name or ID (deprecated)
      description: Looks up tags by tag name or tag ID. If the value is a UUID, lookup is performed by tag ID. Otherwise, lookup is performed by tag name. This endpoint is deprecated - use v2 TagResource instead.
      operationId: getTagsByNameOrIdV1
      parameters:
      - name: nameOrId
        in: path
        description: Tag name or tag UUID to look up
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Tags found successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityTagsView'
        '401':
          description: Unauthorized - authentication required
          content:
            application/json: {}
        '403':
          description: Forbidden - insufficient permissions
          content:
            application/json: {}
        '404':
          description: No tags found matching the given name or ID
          content:
            application/json: {}
      deprecated: true
  /api/v1/tags/user/{userId}:
    get:
      tags:
      - Tag (v1)
      summary: Get tags by user ID (deprecated)
      description: Retrieves all tags owned by a given user. Returns tags that were assigned an owner during creation. This endpoint is deprecated - use v2 TagResource instead.
      operationId: getTagsByUserIdV1
      parameters:
      - name: userId
        in: path
        description: User identifier to retrieve owned tags for
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Tags retrieved successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityTagsView'
        '401':
          description: Unauthorized - authentication required
          content:
            application/json: {}
        '403':
          description: Forbidden - insufficient permissions
          content:
            application/json: {}
        '404':
          description: No tags found for the given user ID
          content:
            application/json: {}
      deprecated: true
  /api/v1/tags/import:
    post:
      tags:
      - Tag (v1)
      summary: Import tags from file (deprecated)
      description: Imports tags from an uploaded file using multipart form data. This endpoint is deprecated - use v2 TagResource instead.
      operationId: importTagsV1
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/FormDataMultiPart'
      responses:
        '200':
          description: Tags imported successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityStringView'
        '400':
          description: Failure importing tags file
          content:
            application/json: {}
        '401':
          description: Unauthorized - authentication required
          content:
            application/json: {}
        '403':
          description: Forbidden - insufficient permissions
          content:
            application/json: {}
      deprecated: true
  /api/v1/tags/tag/{nameOrId}/inode/{inode}:
    put:
      tags:
      - Tag (v1)
      summary: Link tags to an inode (deprecated)
      description: Binds a tag with a given inode. The lookup can be done via tag name or tag ID. If the tag name matches more than one tag, all matching tags will be bound. Use a tag ID instead of a name for more specific binding. This endpoint is deprecated - use v2 TagResource instead.
      operationId: linkTagsAndInodeV1
      parameters:
      - name: nameOrId
        in: path
        description: Tag name or tag UUID to link
        required: true
        schema:
          type: string
      - name: inode
        in: path
        description: Inode identifier to link the tag(s) to
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Tags linked to inode successfully (may contain partial errors)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseEntityTagInodeOperationView'
        '400':
          description: Error linking tag to inode
          content:
            application/json: {}
        '401':
          description: Unauthorized - authentication required
          content:
            application/json: {}
        '403':
          description: Forbidden - insufficient permissions
          content:
            application/json: {}
        '404':
          description: No tags found matching the given name or ID
          content:
            application/json: {}
      deprecated: true
components:
  schemas:
    RestTag:
      type: object
      properties:
        label:
          type: string
        siteId:
          type: string
        siteName:
          type: string
        persona:
          type: boolean
        id:
          type: string
    MessageBodyWorkers:
      type: object
    Pagination:
      type: object
      properties:
        currentPage:
          type: integer
          format: int32
        perPage:
          type: integer
          format: int32
        totalEntries:
          type: integer
          format: int64
    FormDataMultiPart:
      type: object
      properties:
        contentDisposition:
          $ref: '#/components/schemas/ContentDisposition'
        entity:
          type: object
        headers:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
        mediaType:
          type: object
          properties:
            type:
              type: string
            subtype:
              type: string
            parameters:
              type: object
              additionalProperties:
                type: string
            wildcardType:
              type: boolean
            wildcardSubtype:
              type: boolean
        messageBodyWorkers:
          $ref: '#/components/schemas/MessageBodyWorkers'
        parent:
          $ref: '#/components/schemas/MultiPart'
        providers:
          type: object
        bodyParts:
          type: array
          items:
            $ref: '#/components/schemas/BodyPart'
        fields:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/FormDataBodyPart'
        parameterizedHeaders:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/ParameterizedHeader'
    BodyPart:
      type: object
      properties:
        contentDisposition:
          $ref: '#/components/schemas/ContentDisposition'
        entity:
          type: object
        headers:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
        mediaType:
          type: object
          properties:
            type:
              type: string
            subtype:
              type: string
            parameters:
              type: object
              additionalProperties:
                type: string
            wildcardType:
              type: boolean
            wildcardSubtype:
              type: boolean
        messageBodyWorkers:
          $ref: '#/components/schemas/MessageBodyWorkers'
        parent:
          $ref: '#/components/schemas/MultiPart'
        providers:
          type: object
        parameterizedHeaders:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/ParameterizedHeader'
    ResponseEntityTagOperationView:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorEntity'
        entity:
          type: object
          additionalProperties:
            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'
    ResponseEntityTagInodesView:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorEntity'
        entity:
          type: array
          items:
            $ref: '#/components/schemas/TagInode'
        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'
    ParameterizedHeader:
      type: object
      properties:
        value:
          type: string
        parameters:
          type: object
          additionalProperties:
            type: string
    TagForm:
      required:
      - name
      type: object
      properties:
        name:
          type: string
        siteId:
          type: string
        ownerId:
          type: string
        persona:
          type: boolean
    UpdateTagForm:
      required:
      - siteId
      - tagName
      type: object
      properties:
        siteId:
          type: string
        tagName:
          type: string
        tagId:
          type: string
        name:
          type: string
    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'
    ResponseEntityTagInodeOperationView:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorEntity'
        entity:
          type: array
          items:
            $ref: '#/components/schemas/TagInode'
        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'
    TagInode:
      type: object
      properties:
        inode:
          type: string
        tagId:
          type: string
        fieldVarName:
          type: string
        modDate:
          type: string
          format: date-time
    ContentDisposition:
      type: object
      properties:
        type:
          type: string
        parameters:
          type: object
          additionalProperties:
            type: string
        fileName:
          type: string
        creationDate:
          type: string
          format: date-time
        modificationDate:
          type: string
          format: date-time
        readDate:
          type: string
          format: date-time
        size:
          type: integer
          format: int64
    FormDataBodyPart:
      type: object
      properties:
        contentDisposition:
          $ref: '#/components/schemas/ContentDisposition'
        entity:
          type: object
        headers:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
        mediaType:
          type: object
          properties:
            type:
              type: string
            subtype:
              type: string
            parameters:
              type: object
              additionalProperties:
                type: string
            wildcardType:
              type: boolean
            wildcardSubtype:
              type: boolean
        messageBodyWorkers:
          $ref: '#/components/schemas/MessageBodyWorkers'
        parent:
          $ref: '#/components/schemas/MultiPart'
        providers:
          type: object
        formDataContentDisposition:
          $ref: '#/components/schemas/FormDataContentDisposition'
        simple:
          type: boolean
        name:
          type: string
        value:
          type: string
        parameterizedHeaders:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/ParameterizedHeader'
    MultiPart:
      type: object
      properties:
        contentDisposition:
          $ref: '#/components/schemas/ContentDisposition'
        entity:
          type: object
        headers:
          type: object
          additionalProperties:
            type: array
            items:
              type: string
        mediaType:
          type: object
          properties:
            type:
              type: string
            subtype:
              type: string
            parameters:
              type: object
              additionalProperties:
                type: string
            wildcardType:
              type: boolean
            wildcardSubtype:
              type: boolean
        messageBodyWorkers:
          $ref: '#/components/schemas/MessageBodyWorkers'
        parent:
          $ref: '#/components/schemas/MultiPart'
        providers:
          type: object
        bodyParts:
          type: array
          items:
            $ref: '#/components/schemas/BodyPart'
        parameterizedHeaders:
          type: object
          additionalProperties:
            type: array
            items:
              $ref: '#/components/schemas/ParameterizedHeader'
    ResponseEntityTagsView:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ErrorEntity'
        entity:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/RestTag'
        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'
    ErrorEntity:
      type: object
      properties:
        errorCode:
          type: string
        message:
          type: string
        fieldName:
          type: string
    FormDataContentDisposition:
      type: object
      properties:
        type:
          type: string
        parameters:
          type: object
          additionalProperties:
            type: string
        fileName:
          type: string
        creationDate:
          type: string
          format: date-time
        modificationDate:
          type: string
          format: date-time
        readDate:
          type: string
          format: date-time
        size:
          type: integer
          format: int64
        name:
          type: string
    MessageEntity:
      type: object
      properties:
        message:
          type: string