# Create a new version of a content type

Creates a copy of a content type with the same ID as the original, but the version number is updated (for example, from 1 to 2). You can work on the versions independently. During this process you can also create associated content type values, even if you want to add more later.

Endpoint: POST /api/v2/cm/branches/{branchId}/content-types/{contentTypeId}/copy
Version: v2.0
Security: OAuth2.0

## Path parameters:

  - `branchId` (string, required)
    The name of the branch, for example prod.

  - `contentTypeId` (string, required)
    The ID of the content type, for example color.

## Query parameters:

  - `version` (integer)
    The version of the content type.

## Response 201 fields (application/json):

  - `fields` (array,null, required) — one of:
    - TextFieldType:
      - `id` (string,null)
      - `name` (string,null)
      - `label` (string,null)
      - `type` (string,null)
        Enum: "Text", "RichText", "Number", "Boolean", "DateTime", "Reference", "Select", "Json"
      - `required` (boolean,null)
      - `helpText` (string,null)
      - `priorityField` (boolean)
      - `isPrivate` (boolean,null)
      - `singleLineText` (boolean)
      - `rules` (object)
      - `rules.length` (object)
      - `rules.length.min` (integer,null)
      - `rules.length.max` (integer,null)
      - `rules.regexp` (object)
      - `rules.regexp.value` (string,null)
      - `defaultValues` (object,null)
    - RichTextFieldType:
      - `id` (string,null)
      - `name` (string,null)
      - `label` (string,null)
      - `type` (string,null)
        Enum: same as `type` in "TextFieldType" (8 values)
      - `required` (boolean,null)
      - `helpText` (string,null)
      - `priorityField` (boolean)
      - `isPrivate` (boolean,null)
      - `rules` (object)
      - `rules.length` (object)
      - `rules.length.min` (integer,null)
      - `rules.length.max` (integer,null)
    - NumberFieldType:
      - `id` (string,null)
      - `name` (string,null)
      - `label` (string,null)
      - `type` (string,null)
        Enum: same as `type` in "TextFieldType" (8 values)
      - `required` (boolean,null)
      - `helpText` (string,null)
      - `priorityField` (boolean)
      - `isPrivate` (boolean,null)
      - `rules` (object)
      - `rules.limit` (object)
      - `rules.limit.min` (number,null)
      - `rules.limit.max` (number,null)
      - `rules.decimalPlaces` (object)
      - `rules.decimalPlaces.value` (integer)
    - BooleanFieldType:
      - `id` (string,null)
      - `name` (string,null)
      - `label` (string,null)
      - `type` (string,null)
        Enum: same as `type` in "TextFieldType" (8 values)
      - `required` (boolean,null)
      - `helpText` (string,null)
      - `priorityField` (boolean)
      - `isPrivate` (boolean,null)
    - DateTimeFieldType:
      - `id` (string,null)
      - `name` (string,null)
      - `label` (string,null)
      - `type` (string,null)
        Enum: same as `type` in "TextFieldType" (8 values)
      - `required` (boolean,null)
      - `helpText` (string,null)
      - `priorityField` (boolean)
      - `isPrivate` (boolean,null)
      - `rules` (object)
      - `rules.dateTimeRange` (object)
      - `rules.dateTimeRange.min` (string,null)
      - `rules.dateTimeRange.max` (string,null)
      - `rules.isFutureDate` (object)
      - `rules.isFutureDate.value` (boolean,null)
    - ReferenceFieldType:
      - `id` (string,null)
      - `name` (string,null)
      - `label` (string,null)
      - `type` (string,null)
        Enum: same as `type` in "TextFieldType" (8 values)
      - `required` (boolean,null)
      - `helpText` (string,null)
      - `priorityField` (boolean)
      - `isPrivate` (boolean,null)
      - `rules` (object)
      - `rules.countLimit` (object)
      - `rules.countLimit.min` (integer,null)
      - `rules.countLimit.max` (integer,null)
      - `rules.referencetypes` (object)
      - `rules.referencetypes.values` (array,null)
    - SelectFieldTypeRequest:
      - `id` (string,null)
      - `name` (string,null)
      - `label` (string,null)
      - `type` (string,null)
        Enum: same as `type` in "TextFieldType" (8 values)
      - `required` (boolean,null)
      - `helpText` (string,null)
      - `priorityField` (boolean)
      - `isPrivate` (boolean,null)
      - `reference` (object)
      - `reference.id` (string,null)
      - `rules` (object)
      - `rules.countLimit` (object)
      - `rules.countLimit.min` (integer,null)
      - `rules.countLimit.max` (integer,null)
    - JsonFieldType:
      - `id` (string,null)
      - `name` (string,null)
      - `label` (string,null)
      - `type` (string,null)
        Enum: same as `type` in "TextFieldType" (8 values)
      - `required` (boolean,null)
      - `helpText` (string,null)
      - `priorityField` (boolean)
      - `isPrivate` (boolean,null)
      - `rules` (object)
      - `rules.length` (object)
      - `rules.length.min` (integer,null)
      - `rules.length.max` (integer,null)

  - `id` (string,null, required)

  - `name` (string,null, required)

  - `system` (object, required)

  - `system.createdAt` (string, required)

  - `system.createdBy` (string,null, required)

  - `system.environment` (string,null, required)

  - `system.hash` (string,null, required)

  - `system.type` (string,null, required)

  - `system.status` (string)
    Enum: "Draft", "Published", "Archived"

  - `system.availabilityDate` (string,null)

  - `system.unavailabilityDate` (string,null)

  - `system.publishedAt` (string,null)

  - `system.publishedBy` (string,null)

  - `system.archivedDate` (string,null)

  - `system.archivedBy` (string,null)

  - `system.updatedAt` (string,null)

  - `system.updatedBy` (string,null)

  - `label` (string,null)

  - `description` (string,null)

  - `version` (integer)

  - `isDirectQuery` (boolean)

  - `isPrivate` (boolean)

  - `isProtected` (boolean)

  - `fragmentKey` (string,null)

  - `versionTags` (array,null)

  - `fragments` (array,null)

## Response 400 fields (application/json):

  - `type` (string,null)

  - `title` (string,null)

  - `status` (integer,null)

  - `detail` (string,null)

  - `instance` (string,null)


