Common API data types
Common API Types used within multiple API resources.
References
Reference
A Reference represents a loose reference to another resource in the same Project identified by its id. The typeId indicates the type of the referenced resource. Each resource type has its corresponding Reference type, like ChannelReference. A referenced resource can be embedded through Reference Expansion. The expanded reference is the value of an additional obj field then.
idString | Unique ID of the referenced resource. |
typeId | Type of referenced resource. |
{"typeId": "product","id": "d1229e6f-2b79-441e-b419-180311e52754"}
KeyReference
A KeyReference represents a loose reference to another resource in the same Project identified by the resource's key field. If available, the key is immutable and mandatory. KeyReferences do not support Reference Expansion.
keyString | User-defined unique and immutable key of the referenced resource. MinLength:2MaxLength: 256Pattern: ^[A-Za-z0-9_-]+$ |
typeId | Type of referenced resource. |
ResourceIdentifier
Draft type to create a Reference or a KeyReference to a resource. Provide either the id or (wherever supported) the key of the resource to reference, but depending on the API endpoint the response returns either a Reference or a KeyReference. For example, the field parent of a CategoryDraft takes a ResourceIdentifier for its value while the value of the corresponding field of a Category is a Reference.
Each resource type has its corresponding ResourceIdentifier, like ChannelResourceIdentifier.
idString | Unique identifier of the referenced resource. Required if |
keyString | User-defined unique identifier of the referenced resource. Required if |
typeId | Type of referenced resource. If given, it must match the expected ReferenceTypeId of the referenced resource. |
ReferenceTypeId
Type of resource the value should reference. Supported resource type identifiers are:
approval-flowReferences an ApprovalFlow.
approval-ruleReferences an ApprovalRule.
associate-roleReferences an AssociateRole.
attribute-groupReferences an AttributeGroup.
business-unitReferences a BusinessUnit.
cartReferences a Cart.
cart-discountReferences a CartDiscount.
categoryReferences a Category.
channelReferences a Channel.
customerReferences a Customer.
customer-email-tokenReferences a CustomerToken for email verification.
customer-groupReferences a CustomerGroup.
customer-password-tokenReferences a CustomerToken for password reset.
direct-discountReferences a DirectDiscount.
discount-codeReferences a DiscountCode.
extensionReferences an Extension.
inventory-entryReferences an InventoryEntry.
key-value-documentReferences a CustomObject.
orderReferences an Order.
order-editReferences an Order Edit.
paymentReferences a Payment.
productReferences a Product.
product-discountReferences a ProductDiscount.
product-priceReferences an Embedded Price.
product-selectionReferences a ProductSelection.
product-tailoringReferences a ProductTailoring.
product-typeReferences a ProductType.
quoteReferences a Quote.
quote-requestReferences a QuoteRequest.
reviewReferences a Review.
shipping-methodReferences a ShippingMethod.
shopping-listReferences a ShoppingList.
staged-quoteReferences a StagedQuote.
standalone-priceReferences a StandalonePrice.
stateReferences a State.
storeReferences a Store.
subscriptionReferences a Subscription.
tax-categoryReferences a TaxCategory.
typeReferences a Type.
zoneReferences a Zone.
Prices
This section contains representations for prices that are embedded into ProductVariants and Line Items, as well as common data types for Embedded Prices and Standalone Prices. The representations specific to Standalone Prices are documented on their dedicated page.
Price
This type is equivalent to ProductPrice in the GraphQL API.
The representation for prices embedded in LineItems and in ProductVariants when the ProductPriceMode is Embedded.
For the Standalone ProductPriceMode refer to StandalonePrice.
idString | Unique identifier of this Price. |
keyString | User-defined identifier of the Price. It is unique per ProductVariant. MinLength:2MaxLength: 256Pattern: ^[A-Za-z0-9_-]+$ |
value | Money value of this Price. |
country | Country for which this Price is valid. Pattern:^[A-Z]{2}$ |
customerGroup | CustomerGroup for which this Price is valid. |
channel |
|
validFrom | Date and time from which this Price is valid. |
validUntil | Date and time until this Price is valid. Prices that are no longer valid are not automatically removed, but they can be removed if necessary. |
discounted | Is set if a ProductDiscount has been applied.
If set, the API uses the DiscountedPrice value for the Line Item price selection.
When a relative discount has been applied and the fraction part of the DiscountedPrice |
tiersArray of PriceTier | Present if different Prices for certain LineItem quantities have been specified. If |
custom | Custom Fields defined for the Price. |
PriceDraft
This type is equivalent to ProductPriceDataInput in the GraphQL API.
The draft representation for prices to be embedded into ProductVariantDrafts when the ProductPriceMode is Embedded. For the Standalone ProductPriceMode use StandalonePriceDraft.
keyString | User-defined identifier for the Price. It must be unique per ProductVariant. MinLength:2MaxLength: 256Pattern: ^[A-Za-z0-9_-]+$ |
value | Money value of this Price. To set the money value in high precision, use HighPrecisionMoneyDraft. |
country | Set this field if this Price is only valid for the specified country. Pattern:^[A-Z]{2}$ |
customerGroup | Set this field if this Price is only valid for the referenced CustomerGroup. |
channel | Set this field if this Price is only valid for the referenced |
validFrom | Set this field if this Price is only valid from the specified date and time. Must be at least 1 ms earlier than |
validUntil | Set this field if this Price is only valid until the specified date and time. Must be at least 1 ms later than |
discounted | Set this field to add a DiscountedPrice from an external service. Otherwise, Composable Commerce sets this field automatically if at least one ProductDiscount applies. The DiscountedPrice must reference a ProductDiscount with:
|
tiersArray of PriceTierDraft | Set this field to specify different Prices for certain LineItem quantities. If |
custom | Custom Fields for the Price. |
PriceTier
A Price tier is selected instead of the default Price when a certain quantity of the ProductVariant is added to a Cart and ordered. For example: the Price can be lower if more than 10 items are ordered. If no Price tier is found for the Order quantity, the base Price is used. A Price tier is applied for the entire quantity of a Product Variant put as LineItem in a Cart as soon as the minimum quantity for the Price tier is reached. The Price tier is applied per Line Item of the Product Variant. If, for example, the same Product Variant appears in the same Cart as several Line Items, (what can be achieved by different values of a Custom Field on the Line Items) for each Line Item the minimum quantity must be reached to get the Price tier.
minimumQuantityInt | Minimum quantity this Price tier is valid for. The minimum quantity is always greater than or equal to 2. The base Price is interpreted as valid for a minimum quantity equal to 1.
A Price or StandalonePrice cannot contain more than one tier with the same |
value | Money value that applies when the The |
PriceTierDraft
This type is equivalent to ProductPriceTierInput in the GraphQL API.
Specifies a Price tier that applies when the minimum quantity for the LineItem of a ProductVariant with the related Price is reached in a Cart.
minimumQuantityInt | Minimum quantity this Price tier is valid for. The minimum quantity is always greater than or equal to 2. The base Price is interpreted as valid for a minimum quantity equal to 1.
A Price or StandalonePrice cannot contain more than one tier with the same |
value | Money value that applies when the The |
DiscountedPrice
value | Money value of the discounted price. |
discount | ProductDiscount related to the discounted price. |
DiscountedPriceDraft
This type is equivalent to DiscountedProductPriceValueInput in the GraphQL API.
value | Sets the money value for the discounted price. To set the money value in high precision, use HighPrecisionMoneyDraft. |
discount | Relates the referenced ProductDiscount to the discounted price. |
Moneys
TypedMoney
This type is equivalent to BaseMoney in the GraphQL API.
Polymorphic base read-only money type that holds money in cent precision or high precision (in sub-cents).
CentPrecisionMoney
This type is equivalent to Money in the GraphQL API.
Object that stores money in cent amounts of a specific currency.
centAmountInt | Amount in the smallest indivisible unit of a currency, such as:
|
currencyCode | Currency code compliant to ISO 4217. |
type | "centPrecision"Use to set currency in cent precision. |
fractionDigitsInt | The number of default fraction digits for the given currency, like 3 |
{"type": "centPrecision","currencyCode": "EUR","centAmount": 4200,"fractionDigits": 2}
HighPrecisionMoney
This type is equivalent to HighPrecisionMoney in the GraphQL API.
Object that stores money as a fraction of the smallest indivisible unit of a specific currency.
centAmountInt | Amount in the smallest indivisible unit of a currency, such as:
|
currencyCode | Currency code compliant to ISO 4217. |
type | "highPrecision"Use to set currency in high precision. |
fractionDigitsInt | Number of digits after the decimal separator, greater than the default number of fraction digits for a currency. Maximum:20 |
preciseAmountInt | Amount in 1 / (10 ^ |
{"type": "highPrecision","currencyCode": "EUR","centAmount": 1,"preciseAmount": 123456,"fractionDigits": 7}
For details on how to use fraction digits and some examples, refer to Usage.
TypedMoneyDraft
This type is equivalent to BaseMoneyInput in the GraphQL API.
Polymorphic base money type that can hold money in cent precision or high precision (in sub-cents).
- To set money in cent precision, use Money.
- To set money in high precision, use HighPrecisionMoneyDraft.
Money
This type is equivalent to MoneyInput or MoneyDraft in the GraphQL API.
Draft object to store money in cent amounts for a specific currency.
centAmountInt | Amount in the smallest indivisible unit of a currency, such as:
|
currencyCode | Currency code compliant to ISO 4217. |
{"currencyCode": "EUR","centAmount": 4200}
HighPrecisionMoneyDraft
This type is equivalent to HighPrecisionMoneyInput in the GraphQL API.
Draft object to store money as a fraction of the smallest indivisible unit for a specific currency.
centAmountInt | Amount in the smallest indivisible unit of a currency. This field is optional for high precision. If provided, it is checked for validity. Example: A Price of 1.015 USD can be rounded either to 1.01 USD or 1.02 USD. If it lies outside of this range, an error message stating that centAmount must be rounded correctly will be returned. If |
currencyCode | Currency code compliant to ISO 4217. |
type | "highPrecision"Use to set currency in high precision. |
fractionDigitsInt | Number of fraction digits for a specified high precision money. It must be greater than the default number of fraction digits for the specified currency. Maximum:20 |
preciseAmountInt | Amount in 1 / (10 ^ |
{"type": "highPrecision","currencyCode": "EUR","preciseAmount": 123456,"fractionDigits": 7}
MoneyType
Determines the type of money used.
centPrecisionUse to set currency in cent precision.
highPrecisionUse to set currency in high precision.
Usage
For EUR and USD the smallest amount you use in financial transaction is the cent. In particular cases - usually when higher quantities of a certain item are bought - the unit price will be specified in sub-cents.
One example can be a gas station where gas prices are displayed as 1,197 EUR per liter.
This can only be expressed by using HighPrecisionMoney, since it is impossible to represent it by using only the default fractionDigits for EUR, which is 2. As a result, with CentPrecisionMoney it is only possible to define the price as 1.19 EUR or 1.20 EUR. To represent the previously mentioned gas price using sub-cents, you need to use the HighPrecisionMoney type.
Most currencies like USD and EUR have 2 fraction digits (usually called cents). However, there are some exceptions, for example: JPY - Japanese Yen does not have fraction digits at all. For this type of currencies fractionDigits is set to 0. Some currencies like JOD - Jordanian Dinar have 3 fraction digits.
With HighPrecisionMoney, fractionDigits must be greater than the default number for the desired currency. The API validates this when creating a price with a HighPrecisionMoneyDraft.
For example, you cannot create a HighPrecisionMoney type with fractionDigits of 2 for the currency EUR, since this is the default value for this currency. Instead, regular Money can be used in this case.
The following table shows how fractionDigits affect a preciseAmount:
| preciseAmount | fractionDigits | Amount in currency |
|---|---|---|
| 123456 | 3 | 123.456 |
| 123456 | 5 | 1.23456 |
| 123456 | 7 | 0.0123456 |
Both centAmount and preciseAmount are represented as 64-bit integers.
For HighPrecisionMoney, the more fractionDigits you use, the fewer integer digits are available, as both must fit into a 64-bit integer. For example, if you use the maximum allowable amount of 20 fractionDigits, the highest expressible amount is approximately 9 cents.
If a Money operation, such as arithmetic with unusually large amounts, results in either object exceeding the 64-bit limit, the API returns a 400 Bad Request with the MoneyOverflow error code.
Date and Time
Date
A Date is a JSON string representation of a date without timezone in ISO 8601 format (YYYY-MM-DD), for example:
"2018-10-12"
Time
A Time is a JSON string representation of a time without timezone in ISO 8601 format (hh:mm:ss.sss), for example:
"14:00:00.000"
DateTime
A DateTime is a JSON string representation of UTC date & time in ISO 8601 format (YYYY-MM-DDThh:mm:ss.sssZ), for example:
"2018-10-12T14:00:00.000Z"
Localization
CountryCode
Two-digit country code as per ISO 3166-1 alpha-2.
CurrencyCode
Currency code compliant to ISO 4217.
Locale
String value specifying linguistic and regional preferences using the IETF language tag format, as described in BCP 47. The format combines language, script, and region using hyphen-separated subtags. For example: en, en-US, zh-Hans-SG.
LocalizedString
JSON object where the keys are of type Locale, and the values are the strings used for the corresponding language.
{"de": "Hundefutter","en": "dog food"}
GeoJSON Geometry
Representation of a Geometry Object as defined in the GeoJSON standard. Currently, only the Point type is supported.
Point
typeString | "Point" |
coordinatesArray of Number | Longitude (stored on index |
{"type": "Point","coordinates": [13.412119019109015, 52.50103330534661]}
Addresses
BaseAddress
Polymorphic base type that represents a postal address and contact details.
Depending on the read or write action, it can be either Address or AddressDraft that
only differ in the data type for the optional custom field.
idString | Unique identifier of the Address. It is not recommended to set it manually since the API overwrites this ID when creating an Address for a Customer.
Use |
keyString | User-defined identifier of the Address that must be unique when multiple addresses are referenced in BusinessUnits, Customers, and 2MaxLength: 256Pattern: ^[A-Za-z0-9_-]+$ |
externalIdString | ID for the contact used in an external system. |
country | Name of the country. |
titleString | Title of the contact, for example 'Dr.' |
salutationString | Salutation of the contact, for example 'Mr.' or 'Ms.' |
firstNameString | Given name (first name) of the contact. |
lastNameString | Family name (last name) of the contact. |
streetNameString | Name of the street. |
streetNumberString | Street number. |
additionalStreetInfoString | Further information on the street address. |
postalCodeString | Postal code. |
cityString | Name of the city. |
regionString | Name of the region. |
stateString | Name of the state, for example, Colorado. |
companyString | Name of the company. |
departmentString | Name of the department. |
buildingString | Number or name of the building. |
apartmentString | Number or name of the apartment. |
pOBoxString | Post office box number. |
phoneString | Phone number of the contact. |
mobileString | Mobile phone number of the contact. |
emailString | Email address of the contact. |
faxString | Fax number of the contact. |
additionalAddressInfoString | Further information on the Address. |
Address
Address type returned by read methods.
Optionally, the custom field can be present in addition to the fields of a BaseAddress.
custom | Custom Fields defined for the Address. |
AddressDraft
This type is equivalent to AddressInput in the GraphQL API.
Address type to be used on write methods.
Optionally, use the custom field in addition to the fields of a BaseAddress.
custom | Custom Fields defined for the Address. |
{"key": "address1","title": "Mrs.","firstName": "Jane","lastName": "Doe","streetName": "First Street","streetNumber": "12","postalCode": "12345","city": "Example City","country": "NL","phone": "+312345678","mobile": "+312345679","email": "jane.doe@example.com"}
Assets
Assets can be used to represent media assets, such as images, videos, or PDFs.
You can find more information about use of Assets in the respective tutorial.
Asset
idString | Unique identifier of the Asset. |
keyString | User-defined identifier of the Asset. It is unique per Category or ProductVariant. MinLength:2MaxLength: 256Pattern: ^[A-Za-z0-9_-]+$ |
sourcesArray of AssetSource | MinItems: 1 |
name | Name of the Asset. |
description | Description of the Asset. |
tagsArray of String | Keywords for categorizing and organizing Assets. |
custom | Custom Fields defined for the Asset. |
AssetDraft
keyString | User-defined identifier for the Asset. Must be unique per Category or ProductVariant. MinLength:2MaxLength: 256Pattern: ^[A-Za-z0-9_-]+$ |
sourcesArray of AssetSource | MinItems: 1 |
name | Name of the Asset. |
description | Description of the Asset. |
tagsArray of String | Keywords for categorizing and organizing Assets. |
custom | Custom Fields defined for the Asset. |
AssetSource
Representation of an Asset in a specific format, for example a video in a certain encoding, or an image in a certain resolution.
keyString | User-defined identifier of the AssetSource. Must be unique per Asset. MinLength:2MaxLength: 256Pattern: ^[A-Za-z0-9_-]+$ |
uriString | URI of the AssetSource. |
dimensions | Width and height of the AssetSource. |
contentTypeString | Indicates the type of content, for example |
AssetDimensions
Dimensions of the Asset source specified by the number of pixels.
wInt | Width of the Asset source. |
hInt | Height of the Asset source. |
Client logging
These objects represent information about which API Client created or modified a resource. For more information, see Client Logging.
CreatedBy BETA
IDs and references that created the resource. This is present on resources created after 1 February 2019 except for events not tracked.
clientIdString |
|
externalUserIdString | External user ID provided by the 128 |
customer | Indicates the Customer who created the resource using a token from the password flow. |
anonymousIdString | Indicates the anonymous session during which the resource was created. |
associate | Indicates the Customer who created the resource in the context of a Business Unit. Only present when an Associate acts on behalf of a company using the associate endpoints. |
attributedTo | Indicates if the resource was created indirectly. |
LastModifiedBy BETA
IDs and references that last modified the resource. This is present on resources created or updated after 1 February 2019 except for events not tracked.
clientIdString |
|
externalUserIdString | External user ID provided by the 128 |
customer | Indicates the Customer who modified the resource using a token from the password flow. |
anonymousIdString | Indicates the anonymous session during which the resource was modified. |
associate | Indicates the Customer who modified the resource in the context of a Business Unit. Only present when an Associate acts on behalf of a company using the associate endpoints. |
attributedTo | Indicates if the resource was modified indirectly. |
Attribution BETA
Indicates the source and method that indirectly created or modified the resource. This is present on resources created or updated after 1 April 2024.
clientIdString |
|
source | Method used to initiate the creation or modification of the resource. |
AttributionSource BETA
ImportResource was created or updated during import.
ExportResource was created or updated during export.
Warnings
WarningObject
Represents a warning related to the returned response.
codeString | Identifier for the type of warning. |
messageString | Contains information about the returned response. |
ImageProcessingOngoing Warning
Contained in responses to an Upload Product image or an Upload Product Tailoring image request with response status code 202 Accepted.
Indicates that the API is still creating the remaining sizes of the uploaded image. They will be available on the Content Delivery Network (CDN) soon.
codeString | "ImageProcessingOngoing" |
messageString |
|
{"code": "ImageProcessingOngoing","message": "The image processing is still ongoing."}