Types
Types allow you to define additional project-specific fields on resources and data types, so-called "Custom Fields."
commercetools Composable Commerce APIs provide flexible data models that cover a wide range of use cases with the standard fields on the resources and their data objects. However, you might want to add additional fields to resources and data types to better support your usage scenario.
With Types, you can model your own Custom Fields on the data types listed in here.
A Type can contain multiple FieldDefinitions, each of which defines a Custom Field.
FieldDefinition is an analog of AttributeDefinition of Product Types.
Multiple Types can be created for a single resource or data type, but a particular resource or data type can be customized with only one Type at the same time.
The value representations of Custom Fields are separately documented on the Custom Fields page.
Find a step-by-step example on how to use Types and Custom Fields in our respective tutorial.
List of customizable data types
With Types, you can model your own Custom Fields on the following resources and data types:
- Address on BusinessUnit, Cart, Order, OrderEdit, Customer, and Channel
- Asset on Category and ProductVariant
- BusinessUnit BETA
- Cart
- CartDiscount
- Category
- Channel
- Customer
- CustomerGroup
- CustomLineItem on Cart and Order
- Delivery
- DiscountCode
- Embedded Price
- InterfaceInteraction on Payment
- InventoryEntry
- LineItem on Cart and Order, and LineItem on ShoppingList
- Order
- OrderEdit BETA
- Parcel
- Payment
- ProductSelection BETA
- Quote BETA
- QuoteRequest BETA
- ReturnItem
- Review
- ShippingMethod
- ShoppingList
- StagedQuote BETA
- StandalonePrice BETA
- Store
- TextLineItem on ShoppingList
- Transaction on Payment
Representations
Type
idString | Unique identifier of the Type. |
versionInt | Current version of the Type. |
keyString | User-defined unique identifier of the Type. MinLength:2MaxLength: 256Pattern: ^[A-Za-z0-9_-]+$ |
name | Name of the Type. |
description | Description of the Type. |
resourceTypeIdsArray of ResourceTypeId | Resources and/or data types for which the Type is defined. |
fieldDefinitionsArray of FieldDefinition | Defines Custom Fields. |
createdAt | Date and time (UTC) the Type was initially created. |
createdByBETA | Present on resources created after 1 February 2019 except for events not tracked. |
lastModifiedAt | Date and time (UTC) the Type was last updated. |
lastModifiedByBETA | Present on resources created after 1 February 2019 except for events not tracked. |
TypeDraft
keyString | User-defined unique identifier for the Type. MinLength:2MaxLength: 256Pattern: ^[A-Za-z0-9_-]+$ |
name | Name of the Type. |
description | Description of the Type. |
resourceTypeIdsArray of ResourceTypeId | Resources and/or data types for which the Type is defined. |
fieldDefinitionsArray of FieldDefinition | Defines Custom Fields. |
TypePagedQueryResponse
PagedQueryResult with results containing an array of Types.
limitInt | Number of results requested. |
offsetInt | Number of elements skipped. |
countInt | Actual number of results returned. |
totalInt | Total number of results matching the query.
This number is an estimation that is not strongly consistent.
This field is returned by default.
For improved performance, calculating this field can be deactivated by using the query parameter |
resultsArray of Type | Types matching the query. |
TypeReference
TypeResourceIdentifier
ResourceIdentifier of a Type.
ResourceTypeId
IDs indicating the customizable resources and data types.
addressAddress on BusinessUnit, Cart, Order, OrderEdit, Customer, and Channel
assetAsset on Category and ProductVariant
business-unitcart-discountcategorychannelcustomercustomer-groupcustom-line-itemCustomLineItem on Cart and Order
discount-codeinventory-entryline-itemLineItem on Cart and Order, and LineItem on ShoppingList
orderCart and Order. When a Cart is ordered, the CustomFields need to be copied to the Order. For this reason, the Types for Carts are also valid for Orders, and hence both have the same identifier:
order.order-editorder-deliveryorder-parcelorder-return-itempaymentpayment-interface-interactionproduct-priceproduct-selectionquoteQuote, QuoteRequest and StagedQuote. When a StagedQuote is created, the CustomFields will be copied from the QuoteRequest and when a Quote is created, the CustomFields will be copied from the StagedQuote. For this reason, the Types for Quotes are also valid for QuoteRequests and StagedQuotes, and hence all have the same identifier:
quote.reviewshipping-methodshopping-listshopping-list-text-line-itemstandalone-pricestoretransaction
FieldDefinition
Defines a Custom Field and its meta-information. This FieldDefinition is similar to an AttributeDefinition of Product Types.
type | Data type of the Custom Field to define. |
nameString | Name of the Custom Field to define.
Must be unique for a given ResourceTypeId.
In case there is a FieldDefinition with the same 2MaxLength: 36Pattern: ^[A-Za-z0-9_-]+$ |
label | A human-readable label for the field. |
requiredBoolean | Defines whether the field is required to have a value. |
inputHint | Must be either |
TextInputHint
Provides a visual representation type for this field. It is only relevant for string-based field types like CustomFieldStringType and CustomFieldLocalizedStringType. Following values are supported:
SingleLineHint for GUIs to display the field's content in a single line of text.
MultiLineHint for GUIs to display the field's content over multiple lines of text.
FieldType
Abstract parent type for the specific field types with the common name field.
Some of the specific field types have additional fields for meta-data, for example, allowed values for enum types or elementType for set type fields.
CustomFieldBooleanType
Field type for Boolean values.
nameString | "Boolean" |
CustomFieldNumberType
Field type for number values.
nameString | "Number" |
CustomFieldStringType
Field type for string values.
nameString | "String" |
CustomFieldLocalizedStringtype
Field type for LocalizedString values.
nameString | "LocalizedString" |
CustomFieldEnumType
Field type for enum values.
nameString | "Enum" |
valuesArray of CustomFieldEnumValue | Allowed values. |
CustomFieldLocalizedEnumType
Field type for localized enum values.
nameString | "LocalizedEnum" |
valuesArray of CustomFieldLocalizedEnumValue | Allowed values. |
CustomFieldMoneyType
Field type for CentPrecisionMoney values.
nameString | "Money" |
CustomFieldDateType
Field type for Date values.
nameString | "Date" |
CustomFieldTimeType
Field type for Time values.
nameString | "Time" |
CustomFieldDateTimeType
Field type for DateTime values.
nameString | "DateTime" |
CustomFieldReferenceType
Field type for Reference values.
nameString | "Reference" |
referenceTypeId | Resource type the Custom Field can reference. |
CustomFieldSetType
Values of a SetType Custom Field are sets of values of the specified elementType (without duplicate elements).
nameString | "Set" |
elementType | Field type of the elements in the set. |
CustomFieldEnumValue
Defines an allowed value of a CustomFieldEnumType field.
keyString | Key of the value used as a programmatic identifier. |
labelString | Descriptive label of the value. |
CustomFieldLocalizedEnumValue
Defines an allowed value of a CustomFieldLocalizedEnumType field.
keyString | Key of the value used as a programmatic identifier. |
label | Descriptive localized label of the value. |
CustomFieldReferenceValue
Defines which resource type a CustomFieldReferenceType can reference.
cartcategorychannelcustomerkey-value-documentorderproductproduct-typereviewstateshipping-methodzone
Get Type
Get Type by ID
view_types:{projectKey}regionString | Region in which the Project is hosted. |
projectKeyString |
|
idString |
|
expand | The parameter can be passed multiple times. |
200Type
curl -X GET https://api.{region}.commercetools.com/{projectKey}/types/{id} -i \--header 'Authorization: Bearer ${BEARER_TOKEN}'
{"id" : "3ae9bcca-df23-443e-bd22-0c592f9694fa","version" : 1,"key" : "lineitemtype","name" : {"en" : "lineitem"},"description" : {"en" : "description"},"resourceTypeIds" : [ "line-item" ],"fieldDefinitions" : [ {"name" : "offer_name","label" : {"en" : "offer_name"},"required" : false,"type" : {"name" : "String"},"inputHint" : "SingleLine"} ],"createdAt" : "2015-10-07T06:56:19.217Z","lastModifiedAt" : "2015-10-07T06:56:19.217Z"}
Get Type by Key
view_types:{projectKey}regionString | Region in which the Project is hosted. |
projectKeyString |
|
keyString |
|
expand | The parameter can be passed multiple times. |
200Type
curl -X GET https://api.{region}.commercetools.com/{projectKey}/types/key={key} -i \--header 'Authorization: Bearer ${BEARER_TOKEN}'
{"id" : "3ae9bcca-df23-443e-bd22-0c592f9694fa","version" : 1,"key" : "lineitemtype","name" : {"en" : "lineitem"},"description" : {"en" : "description"},"resourceTypeIds" : [ "line-item" ],"fieldDefinitions" : [ {"name" : "offer_name","label" : {"en" : "offer_name"},"required" : false,"type" : {"name" : "String"},"inputHint" : "SingleLine"} ],"createdAt" : "2015-10-07T06:56:19.217Z","lastModifiedAt" : "2015-10-07T06:56:19.217Z"}
Query Types
view_types:{projectKey}regionString | Region in which the Project is hosted. |
projectKeyString |
|
where | The parameter can be passed multiple times. |
/^var[.][a-zA-Z0-9]+$/Any string parameter matching this regular expression | Predicate parameter values. The parameter can be passed multiple times. |
sort | The parameter can be passed multiple times. |
expand | The parameter can be passed multiple times. |
limitInt | Number of results requested. |
offsetInt | Number of elements skipped. |
withTotalBoolean | Controls the calculation of the total number of query results. Set to |
curl -X GET https://api.{region}.commercetools.com/{projectKey}/types -i \--header 'Authorization: Bearer ${BEARER_TOKEN}'
{"limit" : 20,"offset" : 0,"count" : 1,"total" : 1,"results" : [ {"id" : "3ae9bcca-df23-443e-bd22-0c592f9694fa","version" : 1,"key" : "lineitemtype","name" : {"en" : "lineitem"},"description" : {"en" : "description"},"resourceTypeIds" : [ "line-item" ],"fieldDefinitions" : [ {"name" : "offer_name","label" : {"en" : "offer_name"},"required" : false,"type" : {"name" : "String"},"inputHint" : "SingleLine"} ],"createdAt" : "2015-10-07T06:56:19.217Z","lastModifiedAt" : "2015-10-07T06:56:19.217Z"} ]}
Create Type
manage_types:{projectKey}regionString | Region in which the Project is hosted. |
projectKeyString |
|
expand | The parameter can be passed multiple times. |
201Type
curl -X POST https://api.{region}.commercetools.com/{projectKey}/types -i \--header 'Authorization: Bearer ${BEARER_TOKEN}' \--header 'Content-Type: application/json' \--data-binary @- << DATA{"key" : "lineitemtype","name" : {"en" : "lineitem"},"description" : {"en" : "description"},"resourceTypeIds" : [ "line-item" ],"fieldDefinitions" : [ {"name" : "offer_name","label" : {"en" : "offer_name"},"required" : false,"type" : {"name" : "String"},"inputHint" : "SingleLine"} ]}DATA
{"id" : "3ae9bcca-df23-443e-bd22-0c592f9694fa","version" : 1,"key" : "lineitemtype","name" : {"en" : "lineitem"},"description" : {"en" : "description"},"resourceTypeIds" : [ "line-item" ],"fieldDefinitions" : [ {"name" : "offer_name","label" : {"en" : "offer_name"},"required" : false,"type" : {"name" : "String"},"inputHint" : "SingleLine"} ],"createdAt" : "2015-10-07T06:56:19.217Z","lastModifiedAt" : "2015-10-07T06:56:19.217Z"}
Update Type
Update Type by ID
manage_types:{projectKey}regionString | Region in which the Project is hosted. |
projectKeyString |
|
idString |
|
expand | The parameter can be passed multiple times. |
versionInt | Expected version of the type on which the changes should be applied. If the expected version does not match the actual version, a 409 Conflict will be returned. |
actionsArray of TypeUpdateAction | Update actions to be performed on the Type. |
200Type
curl -X POST https://api.{region}.commercetools.com/{projectKey}/types/{id} -i \--header 'Authorization: Bearer ${BEARER_TOKEN}' \--header 'Content-Type: application/json' \--data-binary @- << DATA{"version" : 1,"actions" : [ {"action" : "changeName","name" : {"en" : "New Name"}} ]}DATA
{"id" : "3ae9bcca-df23-443e-bd22-0c592f9694fa","version" : 1,"key" : "lineitemtype","name" : {"en" : "lineitem"},"description" : {"en" : "description"},"resourceTypeIds" : [ "line-item" ],"fieldDefinitions" : [ {"name" : "offer_name","label" : {"en" : "offer_name"},"required" : false,"type" : {"name" : "String"},"inputHint" : "SingleLine"} ],"createdAt" : "2015-10-07T06:56:19.217Z","lastModifiedAt" : "2015-10-07T06:56:19.217Z"}
Update Type by Key
manage_types:{projectKey}regionString | Region in which the Project is hosted. |
projectKeyString |
|
keyString |
|
expand | The parameter can be passed multiple times. |
versionInt | Expected version of the type on which the changes should be applied. If the expected version does not match the actual version, a 409 Conflict will be returned. |
actionsArray of TypeUpdateAction | Update actions to be performed on the Type. |
200Type
curl -X POST https://api.{region}.commercetools.com/{projectKey}/types/key={key} -i \--header 'Authorization: Bearer ${BEARER_TOKEN}' \--header 'Content-Type: application/json' \--data-binary @- << DATA{"version" : 1,"actions" : [ {"action" : "changeName","name" : {"en" : "New Name"}} ]}DATA
{"id" : "3ae9bcca-df23-443e-bd22-0c592f9694fa","version" : 1,"key" : "lineitemtype","name" : {"en" : "lineitem"},"description" : {"en" : "description"},"resourceTypeIds" : [ "line-item" ],"fieldDefinitions" : [ {"name" : "offer_name","label" : {"en" : "offer_name"},"required" : false,"type" : {"name" : "String"},"inputHint" : "SingleLine"} ],"createdAt" : "2015-10-07T06:56:19.217Z","lastModifiedAt" : "2015-10-07T06:56:19.217Z"}
Update actions
Change Key
actionString | "changeKey" |
keyString | New value to set. Must not be empty. MinLength:2MaxLength: 256Pattern: ^[A-Za-z0-9_-]+$ |
{"action" : "changeKey","key" : "NewKey"}
Change Name
actionString | "changeName" |
name | New value to set. Must not be empty. |
{"action" : "changeName","name" : {"en" : "NameDE","de" : "NameEN"}}
Set Description
actionString | "setDescription" |
description | Value to set. If empty, any existing value will be removed. |
{"action" : "setDescription","description" : {"de" : "DescriptionDE","en" : "DescriptionEN"}}
Add FieldDefinition
actionString | "addFieldDefinition" |
fieldDefinition | Value to append to the array. |
{"action" : "addFieldDefinition","fieldDefinition" : {"type" : {"name" : "LocalizedString"},"name" : "fieldDefinitionName","label" : {"de" : "labelDE","en" : "labelEN"},"required" : false,"inputHint" : "MultiLine"}}
Remove FieldDefinition
actionString | "removeFieldDefinition" |
fieldNameString |
|
{"action" : "removeFieldDefinition","fieldName" : "fieldDefinitionName"}
Change FieldDefinition Label
actionString | "changeLabel" |
fieldNameString | Name of the Field Definition to update. |
label |
{"action" : "changeLabel","fieldName" : "CustomTextField","label" : {"de" : "NewLabelDE","en" : "NewLabelEN"}}
Add EnumValue to FieldDefinition
actionString | "addEnumValue" |
fieldNameString |
|
value | Value to append to the array. |
{"action" : "addEnumValue","fieldName" : "CustomENumField","value" : {"key" : "NewENumKey","label" : "NewENumLabel"}}
Add LocalizedEnumValue to FieldDefinition
Adds a value to a LocalizedEnumType. This update action can be used to update a LocalizedEnumType FieldDefinition and a SetType FieldDefinition of CustomFieldLocalizedEnumType.
actionString | "addLocalizedEnumValue" |
fieldNameString |
|
Value to append to the array. |
{"action" : "addLocalizedEnumValue","fieldName" : "CustomLeNumField","value" : {"key" : "NewLocalizedEnumKeyString","label" : {"en" : "NewLocalizedEnumLabelEN","de" : "NewLocalizedEnumLabelDE"}}}
Change the order of FieldDefinitions
actionString | "changeFieldDefinitionOrder" |
fieldNamesArray of String | Must match the set of |
{"action" : "changeFieldDefinitionOrder","fieldNames" : [ "CustomENumField", "CustomLeNumField", "CustomTextField" ]}
Change the order of EnumValues
Changes the order of EnumValues in an EnumType FieldDefinition. This update action can be used to update an EnumType FieldDefinition and a SetType FieldDefinition of EnumType.
actionString | "changeEnumValueOrder" |
fieldNameString |
|
keysArray of String | Must match the set of |
{"action" : "changeEnumValueOrder","fieldName" : "CustomENumField","keys" : [ "neweNumKey", "NewENumKey", "enum2", "enum1" ]}
Change the order of LocalizedEnumValues
Changes the order of LocalizedEnumValues in a LocalizedEnumType FieldDefinition. This update action can be used to update a LocalizedEnumType FieldDefinition and a SetType of LocalizedEnumType FieldDefinitions.
actionString | "changeLocalizedEnumValueOrder" |
fieldNameString |
|
keysArray of String | Must match the set of |
{"action" : "changeLocalizedEnumValueOrder","fieldName" : "CustomLeNumField","keys" : [ "newleNumKey", "NewLocalizedEnumKeyString", "lenum2", "lenum1" ]}
Change InputHint
Changes the inputHint of CustomFieldStringType FieldDefinition, a CustomFieldLocalizedStringType FieldDefinition, and CustomFieldSetType FieldDefinition of these string-based FieldTypes.
actionString | "changeInputHint" |
fieldNameString |
|
inputHint | New value to set. Must not be empty. |
Change EnumValue Label
actionString | "changeEnumValueLabel" |
fieldNameString |
|
value | New value to set. Must not be empty. |
Change LocalizedEnumValue Label
Changes the label of a LocalizedEnumValue of a LocalizedEnumType FieldDefinition.
actionString | "changeLocalizedEnumValueLabel" |
fieldNameString |
|
New value to set. Must not be empty. |
Delete Type
These requests delete Types only if they are not referenced by other entities.
Delete Type by ID
manage_types:{projectKey}regionString | Region in which the Project is hosted. |
projectKeyString |
|
idString |
|
versionInt | Last seen version of the resource. |
expand | The parameter can be passed multiple times. |
200Type
curl -X DELETE https://api.{region}.commercetools.com/{projectKey}/types/{id}?version={version} -i \--header 'Authorization: Bearer ${BEARER_TOKEN}'
{"id" : "3ae9bcca-df23-443e-bd22-0c592f9694fa","version" : 1,"key" : "lineitemtype","name" : {"en" : "lineitem"},"description" : {"en" : "description"},"resourceTypeIds" : [ "line-item" ],"fieldDefinitions" : [ {"name" : "offer_name","label" : {"en" : "offer_name"},"required" : false,"type" : {"name" : "String"},"inputHint" : "SingleLine"} ],"createdAt" : "2015-10-07T06:56:19.217Z","lastModifiedAt" : "2015-10-07T06:56:19.217Z"}
Delete Type by Key
manage_types:{projectKey}regionString | Region in which the Project is hosted. |
projectKeyString |
|
keyString |
|
versionInt | Last seen version of the resource. |
expand | The parameter can be passed multiple times. |
200Type
curl -X DELETE https://api.{region}.commercetools.com/{projectKey}/types/key={key}?version={version} -i \--header 'Authorization: Bearer ${BEARER_TOKEN}'
{"id" : "3ae9bcca-df23-443e-bd22-0c592f9694fa","version" : 1,"key" : "lineitemtype","name" : {"en" : "lineitem"},"description" : {"en" : "description"},"resourceTypeIds" : [ "line-item" ],"fieldDefinitions" : [ {"name" : "offer_name","label" : {"en" : "offer_name"},"required" : false,"type" : {"name" : "String"},"inputHint" : "SingleLine"} ],"createdAt" : "2015-10-07T06:56:19.217Z","lastModifiedAt" : "2015-10-07T06:56:19.217Z"}