How to read and write values for characteristics
This document describes how you can use the service api to read and write item, product or variant values for characteristics.
Characteristics are the new alternative to attributes. They allow to store additional data on products, variants and items without the need to adjust the repository and without the restriction to have the information on each and every product, variant and item. Characteristics are similar to attributes in that you can configure them to have a specific data type and define if they are mandatory or multi value. They are also dynamic in nature and can be changed during runtime. In contrast to attributes, they allow a hierarchy of values and dependencies between them. This allows for a value to only be maintained dependent on the selected value for the parent characteristic.
Please see the Knowledge Base article "Characteristics - Dynamic data model" for more details on the possibilities and the general handling within Product 360.
The Service API for characteristics follows the general List API contract and has the same parameters. Please make yourself familiar with the REST List API before you read this how-to.
Definitions
Name |
|
Characteristic |
The model definition. Name, Datatype, Lookup Values, etc. |
CharacteristicRecord |
A characteristic record contains the actual value for the characteristic for a specific entity-item like item, product or variant. |
ArticleCharacteristicValue, |
The repository entity for a characteristic record of the corresponding root entity |
SimpleArticleCharacteristicValue, |
The repository entity for a simple characteristic record of the corresponding root entity. A simple characteristic is a root characteristic without children. Values for simple characteristics can be assigned to items, products or variants by specifying only the simple characteristic and the language. |
Qualifications
Qualification |
Datatype |
|
characteristic |
ENTITY_ITEM |
The characteristic to which this value belongs as ENTITY_ITEM |
rootCharacteristic |
ENTITY_ITEM |
The root characteristic (not necessarily the parent) of the characteristic as ENTITY_ITEM. |
recordKey |
String |
The key of the characteristic record, is unique within the characteristic. The default value for this qualification is 0000.0000.RKThe record key is mandatory in case there are multiple records for the same characteristic. We recommend to use the default record key as long as you don't have multiple records for the same characteristic, |
language |
String |
The key or code or name of the language in which the value should be interpreted. This defaults to -1 for characteristics which are not defined as language specific. |
Datatypes
Characteristic Datatype |
Corresponding Rest Datatype |
TEXT |
|
INTEGER |
|
DECIMAL |
|
BOOLEAN |
|
DATE |
|
DATETIME |
|
MIME |
|
LOOKUP |
|
NONE |
This datatype is typically used to build logical groups of characteristics with a common parent. |
Fields
The field which contains the actual value of a characteristic record is ArticleCharacteristicValueLang.Value
This field is always a multi-value field which means it will always be returned as array. Some characteristics are multi-value and others are not, in this case the client can treat them all the same. The datatype with regards to the Service API is ANY, which means any of the datatypes which are supported by the characteristics will be returned - depending on the definition of the record's characteristic.
Special Case: LookupValues
In order to provide the generic Field transition functionality for characteristic values of datatype lookup a specialized field is provided: ArticleCharacteristicValue.LookupValue
This field only contains a value if the datatype of the characteristic is lookup value and it can actually be used to build a transition field like: ArticleCharacteristicValue.LookupValue→LookupValueLang.Description(de) which would return the German description of this lookup value.
Read Access
CharacteristicsValues can be read in the same way as any other sub-entity can be read. Either by fully qualifying a field parameter with all qualifications or by requesting all records for this sub-entity and specifying some of the qualifications as optional filters.
The nature of the characteristics makes it not easy to use in a fully qualified manner, as the recordKey can be different for each item/characteristic combination.
So one fully qualified column might not return values for all items in the table as the record key must not match.
Examples based on the root entity
As mentioned above, reading characteristic values with fully qualified fields is difficult in general. But it is quite easy for simple characteristics as the following examples show.
GET Simple characteristic values for Item
http://
<
server
>:<
port
>/rest/V2.0/list/Article/bySearch?query=Article.SupplierAID startsWith "ItemRestTest"&fields=SimpleArticleCharacteristicValueLang.Value(COLOR,-1),SimpleArticleCharacteristicValueLang.Value(STATEMENT,en),SimpleArticleCharacteristicValueLang.Value(STATEMENT,de)&includeLabels=true
As a result the following structure of characteristic values will be provided
{
"cacheId": "no-cache",
"entityIdentifier": "Article",
"totalSize": 2,
"startIndex": 0,
"pageSize": 100,
"rowCount": 2,
"columnCount": 0,
"columns": [],
"rows": [
{
"object": {
"id": "158684@1",
"label": "ItemRestTest",
"entityId": 1000
},
"values": [
[
{
"id": "1455@945",
"label": "green",
"entityId": 7300
}
],
[
"Statement"
],
[
"Erklärung"
]
]
},
{
"object": {
"id": "158685@1",
"label": "ItemRestTest2",
"entityId": 1000
},
"values": [
[
{
"id": "1456@945",
"label": "blue",
"entityId": 7300
}
],
[
"No statement necessary"
],
[
"Keine Erklärung nötig"
]
]
}
]
}
GET MIME value meta data and MIME values for Product
GET MIME value meta data for Product
http://
<
server
>:<
port
>/rest/V2.0/list/Product2G/bySearch?query=Product2G.ProductNo startsWith "RestTestProduct"&fields=SimpleProduct2GCharacteristicValueLang.Value(LOGO,-1)&includeLabels=true
As a result the following structure of characteristic values will be provided
{
"cacheId": "no-cache",
"entityIdentifier": "Product2G",
"totalSize": 2,
"startIndex": 0,
"pageSize": 100,
"rowCount": 2,
"columnCount": 0,
"columns": [],
"rows": [
{
"object": {
"id": "158686@1",
"label": "RestTestProduct",
"entityId": 1100
},
"values": [
[
{
"label": "logo.png",
"mimeType": "image/png",
"relativeFilePath": "29\\27\\19\\logo.908f8b16002fbfb2_4955b4f5_170d4d6aaae_-7e4a.png"
}
]
]
},
{
"object": {
"id": "158687@1",
"label": "RestTestProduct2",
"entityId": 1100
},
"values": [
[
{
"label": "logo_global.png",
"mimeType": "image/png",
"relativeFilePath": "10\\46\\16\\logo_global.908f8b16002fbfb2_4955b4f5_170d4d6aaae_-7e3b.png"
}
]
]
}
]
}
GET MIME values for Product
http://
<
server
>:<
port
>/rest/V2.0/list/Product2G/mimes/bySearch?query=Product2G.ProductNo startsWith "RestTestProduct"&fields=SimpleProduct2GCharacteristicValueLang.Value(LOGO,-1)&includeLabels=true
As result a zip file containing the MIME files will be provided
Examples based on the sub-entity
GET Characteristic values for Item
http://
<
server
>:<
port
>/rest/V2.0/list/Article/ArticleCharacteristicValue/bySearch?query=Article.SupplierAID equals "ArticleRestTest"&fields=ArticleCharacteristicValue.RecordKey,ArticleCharacteristicValueLang.Value&includeLabels=true
As a result the following structure of characteristic values will be provided
{
"cacheId": "no-cache",
"entityIdentifier": "ArticleCharacteristicValue",
"totalSize": 1,
"startIndex": 0,
"pageSize": 100,
"rowCount": 1,
"columnCount": 0,
"columns": [],
"rows": [
{
"object": {
"id": "10126@1",
"label": "ArticleRestTest",
"entityId": 1000
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "10769",
"label": "LookupRestArticleTestCharacteristic [LookupRestArticleTestCharacteristic]",
"entityId": 8000
},
"parentRecordKey": "root",
"language": "",
"characteristic": {
"id": "10769",
"label": "LookupRestArticleTestCharacteristic [LookupRestArticleTestCharacteristic]",
"entityId": 8000
}
},
"values": [
"0000.0000.RK",
[
{
"id": "10615@3",
"label": "ActualValue",
"entityId": 7300
}
]
]
}
]
}
GET Characteristic values for Product
http://
<
server
>:<
port
>/rest/V2.0/list/Product2G/Product2GCharacteristicValue/bySearch?query=Product2G.ProductNo equals "RestTestProductNo"&fields=Product2GCharacteristicValue.RecordKey,Product2GCharacteristicValueLang.Value&includeLabels=true
As a result the following structure of characteristic values will be provided
{
"cacheId": "no-cache",
"entityIdentifier": "Product2GCharacteristicValue",
"totalSize": 1,
"startIndex": 0,
"pageSize": 100,
"rowCount": 10,
"columnCount": 0,
"columns": [],
"rows": [
{
"object": {
"id": "10123@1",
"label": "RestTestProductNo",
"entityId": 1100
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "10759",
"label": "TextRestTestCharacteristic [TextRestTestCharacteristic]",
"entityId": 8000
},
"parentRecordKey": "root",
"language": "-1",
"characteristic": {
"id": "10759",
"label": "TextRestTestCharacteristic [TextRestTestCharacteristic]",
"entityId": 8000
}
},
"values": [
"0000.0000.RK",
[
"TextRestTestCharacteristicValue"
]
]
},
]
}
GET Characteristic values for Variant
http://
<
server
>:<
port
>/rest/V2.0/list/Variant/VariantCharacteristicValue/bySearch?query=Variant.VariantNo equals "VariantRestTest"&fields=VariantCharacteristicValue.RecordKey,VariantCharacteristicValueLang.Value&includeLabels=true
As a result the following structure of characteristic values will be provided
{
"cacheId": "no-cache",
"entityIdentifier": "VariantCharacteristicValue",
"totalSize": 1,
"startIndex": 0,
"pageSize": 100,
"rowCount": 10,
"columnCount": 0,
"columns": [],
"rows": [
{
"object": {
"id": "10123@1",
"label": "RestTestVariantNo",
"entityId": 1100
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "10759",
"label": "TextRestTestCharacteristic [TextRestTestCharacteristic]",
"entityId": 8000
},
"parentRecordKey": "root",
"language": "-1",
"characteristic": {
"id": "10759",
"label": "TextRestTestCharacteristic [TextRestTestCharacteristic]",
"entityId": 8000
}
},
"values": [
"0000.0000.RK",
[
"TextRestTestCharacteristicValue"
]
]
},
]
}
GET Characteristic values and lookup value codes for Item
http://
<
server
>:<
port
>/rest/V2.0/list/Article/ArticleCharacteristicValue/bySearch?query=Article.SupplierAID equals "ItemRestTest"&fields=ArticleCharacteristicValue.RecordKey,ArticleCharacteristicValueLang.Value,ArticleCharacteristicValue.LookupValue -> LookupValue.Code&includeLabels=true
As a result the following structure of characteristic values and lookup value codes will be provided
{
"cacheId": "no-cache",
"entityIdentifier": "ArticleCharacteristicValue",
"totalSize": 1,
"startIndex": 0,
"pageSize": 100,
"rowCount": 1,
"columnCount": 0,
"columns": [],
"rows": [
{
"object": {
"id": "158684@1",
"label": "ItemRestTest",
"entityId": 1000
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "3422",
"label": "Color [COLOR]",
"entityId": 8000
},
"parentRecordKey": "root",
"language": "-1",
"characteristic": {
"id": "3422",
"label": "Color [COLOR]",
"entityId": 8000
}
},
"values": [
"0000.0000.RK",
[
{
"id": "1455@945",
"label": "green",
"entityId": 7300
}
],
"GREEN"
]
}
]
}
GET Characteristic values for Item for specific languages
http://
<
server
>:<
port
>/rest/V2.0/list/Article/ArticleCharacteristicValue/bySearch?query=Article.SupplierAID equals "ItemRestTest"&fields=ArticleCharacteristicValueLang.Value&includeLabels=true&qualificationFilter=language(en,de,fr)
As a result the following structure of characteristic values will be provided
{
"cacheId": "no-cache",
"entityIdentifier": "ArticleCharacteristicValue",
"totalSize": 1,
"startIndex": 0,
"pageSize": 100,
"rowCount": 3,
"columnCount": 0,
"columns": [],
"rows": [
{
"object": {
"id": "158684@1",
"label": "ItemRestTest",
"entityId": 1000
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "4300",
"label": "Statement [STATEMENT]",
"entityId": 8000
},
"parentRecordKey": "root",
"language": "9",
"characteristic": {
"id": "4300",
"label": "Statement [STATEMENT]",
"entityId": 8000
}
},
"values": [
[
"Statement"
]
]
},
{
"object": {
"id": "158684@1",
"label": "ItemRestTest",
"entityId": 1000
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "4300",
"label": "Statement [STATEMENT]",
"entityId": 8000
},
"parentRecordKey": "root",
"language": "12",
"characteristic": {
"id": "4300",
"label": "Statement [STATEMENT]",
"entityId": 8000
}
},
"values": [
[
"Déclaration"
]
]
},
{
"object": {
"id": "158684@1",
"label": "ItemRestTest",
"entityId": 1000
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "4300",
"label": "Statement [STATEMENT]",
"entityId": 8000
},
"parentRecordKey": "root",
"language": "7",
"characteristic": {
"id": "4300",
"label": "Statement [STATEMENT]",
"entityId": 8000
}
},
"values": [
[
"Erklärung"
]
]
}
]
}
GET versioned Characteristic values for Product
http://
<
server
>:<
port
>/rest/V2.0/list/Product2G/Product2GCharacteristicValue/bySearch?query=Product2G.ProductNo equals "P_3"&revision='ProductVersion2'&fields=Product2GCharacteristicValue.RecordKey,Product2GCharacteristicValueLang.Value&includeLabels=true
As a result the following structure of characteristic values will be provided
{
"cacheId": "no-cache",
"entityIdentifier": "Product2GCharacteristicValue",
"revision": {
"id": "10",
"label": "ProductVersion2",
"entityId": 5600
},
"totalSize": 1,
"startIndex": 0,
"pageSize": 100,
"rowCount": 5,
"columnCount": 0,
"columns": [],
"rows": [
{
"object": {
"id": "17@1",
"label": "P_3",
"entityId": 1100
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "24",
"label": "Marketing information [marketingInformation]",
"entityId": 8000
},
"parentRecordKey": "0000.0000.RK",
"language": "-1",
"characteristic": {
"id": "26",
"label": "Coupon family code [couponFamilyCode]",
"entityId": 8000
}
},
"values": [
"0000.0000.RK",
[
"54321"
]
]
},
{
"object": {
"id": "17@1",
"label": "P_3",
"entityId": 1100
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "24",
"label": "Marketing information [marketingInformation]",
"entityId": 8000
},
"parentRecordKey": "root",
"language": "",
"characteristic": {
"id": "24",
"label": "Marketing information [marketingInformation]",
"entityId": 8000
}
},
"values": [
"0000.0000.RK",
[
""
]
]
},
{
"object": {
"id": "17@1",
"label": "P_3",
"entityId": 1100
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "24",
"label": "Marketing information [marketingInformation]",
"entityId": 8000
},
"parentRecordKey": "0000.0000.RK",
"language": "7",
"characteristic": {
"id": "31",
"label": "Included accessories [tradeItemIncludedAccessories]",
"entityId": 8000
}
},
"values": [
"0000.0000.RK",
[
"Version ProductVersion2"
]
]
},
{
"object": {
"id": "17@1",
"label": "P_3",
"entityId": 1100
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "24",
"label": "Marketing information [marketingInformation]",
"entityId": 8000
},
"parentRecordKey": "0000.0000.RK",
"language": "9",
"characteristic": {
"id": "31",
"label": "Included accessories [tradeItemIncludedAccessories]",
"entityId": 8000
}
},
"values": [
"0000.0000.RK",
[
"Version ProductVersion2"
]
]
},
{
"object": {
"id": "17@1",
"label": "P_3",
"entityId": 1100
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "24",
"label": "Marketing information [marketingInformation]",
"entityId": 8000
},
"parentRecordKey": "0000.0000.RK",
"language": "-1",
"characteristic": {
"id": "25",
"label": "Build-In product type [buildInProductType]",
"entityId": 8000
}
},
"values": [
"0000.0000.RK",
[
"Version ProductVersion2"
]
]
}
]
}
GET versioned Characteristic values for Variant
http://
<
server
>:<
port
>/rest/V2.0/list/Variant/VariantCharacteristicValue/bySearch?query=Variant.VariantNo equals "V_3"&revision='ProductVersion2'&fields=VariantCharacteristicValue.RecordKey,VariantCharacteristicValueLang.Value&includeLabels=true
As a result the following structure of characteristic values will be provided
{
"cacheId": "no-cache",
"entityIdentifier": "VariantCharacteristicValue",
"revision": {
"id": "10",
"label": "ProductVersion2",
"entityId": 5600
},
"totalSize": 1,
"startIndex": 0,
"pageSize": 100,
"rowCount": 2,
"columnCount": 0,
"columns": [],
"rows": [
{
"object": {
"id": "94@1",
"label": "V_3",
"entityId": 1200
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "24",
"label": "Marketing information [marketingInformation]",
"entityId": 8000
},
"parentRecordKey": "root",
"language": "",
"characteristic": {
"id": "24",
"label": "Marketing information [marketingInformation]",
"entityId": 8000
}
},
"values": [
"0000.0000.RK",
[
""
]
]
},
{
"object": {
"id": "94@1",
"label": "V_3",
"entityId": 1200
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "24",
"label": "Marketing information [marketingInformation]",
"entityId": 8000
},
"parentRecordKey": "0000.0000.RK",
"language": "9",
"characteristic": {
"id": "39",
"label": "Key words [tradeItemKeyWords]",
"entityId": 8000
}
},
"values": [
"0000.0000.RK",
[
"Variant versioned with product in ProductVersion2"
]
]
}
]
}
GET versioned Characteristic values for Item
http://
<
server
>:<
port
>/rest/V2.0/list/Article/ArticleCharacteristicValue/bySearch?query=Article.SupplierAID equals "I_3"&revision='ProductVersion2'&fields=ArticleCharacteristicValue.RecordKey,ArticleCharacteristicValueLang.Value&includeLabels=true
As a result the following structure of characteristic values will be provided
{
"cacheId": "no-cache",
"entityIdentifier": "ArticleCharacteristicValue",
"revision": {
"id": "10",
"label": "ProductVersion2",
"entityId": 5600
},
"totalSize": 1,
"startIndex": 0,
"pageSize": 100,
"rowCount": 2,
"columnCount": 0,
"columns": [],
"rows": [
{
"object": {
"id": "95@1",
"label": "I_3",
"entityId": 1000
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "24",
"label": "Marketing information [marketingInformation]",
"entityId": 8000
},
"parentRecordKey": "0000.0000.RK",
"language": "9",
"characteristic": {
"id": "39",
"label": "Key words [tradeItemKeyWords]",
"entityId": 8000
}
},
"values": [
"0000.0000.RK",
[
"Item versioned with variant and product in ProductVersion2"
]
]
},
{
"object": {
"id": "95@1",
"label": "I_3",
"entityId": 1000
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "24",
"label": "Marketing information [marketingInformation]",
"entityId": 8000
},
"parentRecordKey": "root",
"language": "",
"characteristic": {
"id": "24",
"label": "Marketing information [marketingInformation]",
"entityId": 8000
}
},
"values": [
"0000.0000.RK",
[
""
]
]
}
]
}
GET MIME value metadata and MIME values for Product
GET MIME value metadata for Product
http://
<
server
>:<
port
>/rest/V2.0/list/Product2G/Product2GCharacteristicValue/bySearch?query=Product2G.ProductNo equals "RestTestProductNo"&fields=Product2GCharacteristicValueLang.Value&includeLabels=true
{
"cacheId": "no-cache",
"entityIdentifier": "Product2GCharacteristicValue",
"totalSize": 1,
"startIndex": 0,
"pageSize": 100,
"rowCount": 10,
"columnCount": 0,
"columns": [],
"rows": [
{
"object": {
"id": "10123@1",
"label": "RestTestProductNo",
"entityId": 1100
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "10765",
"label": "MimeRestTestCharacteristic [MimeRestTestCharacteristic]",
"entityId": 8000
},
"parentRecordKey": "root",
"language": "-1",
"characteristic": {
"id": "10765",
"label": "MimeRestTestCharacteristic [MimeRestTestCharacteristic]",
"entityId": 8000
}
},
"values": [
[
{
"label": "880x495_cmsv2_298e3b01-877d-57e3-9ce0-0542084c5af4-3217366.jpg",
"mimeType": "image/jpeg",
"relativeFilePath": "35\\18\\14\\880x495_cmsv2_298e3b.b245cc1ddda0ddd7_1023f19d_16bad3f75bb_-7bf7.jpg"
}
]
]
}
]
}
GET MIME values for Product
http://
<
server
>:<
port
>/rest/V2.0/list/Product2G/Product2GCharacteristicValue/mimes/bySearch?query=Product2G.ProductNo equals "RestTestProductNo"&fields=Product2GCharacteristicValueLang.Value
As result a zip file containing the MIME files will be provided
Write Access
Examples based on the root entity
As mentioned above, writing characteristic values with fully qualified fields is difficult in general. But it is quite easy for simple characteristics as the following example show.
POST Simple characteristic values for Item
http://
<
server
>:<
port
>/rest/V2.0/list/Article
This POST request requires the following request body
{
"columns": [
{ "identifier": "SimpleArticleCharacteristicValueLang.Value(STATEMENT,en)" },
{ "identifier": "SimpleArticleCharacteristicValueLang.Value(STATEMENT,de)" },
{ "identifier": "SimpleArticleCharacteristicValueLang.Value(STATEMENT,fr)" }
],
"rows": [
{
"object": { "id": "'ItemRestTest'@'MASTER'" }
,
"values": [
"Another EN statement",
"Another DE statement",
"Another FR statement"
]
}
]
}
As a result the following answer will be provided
{
"counters": {
"errors": 0,
"warnings": 0,
"createdObjects": 0,
"updatedObjects": 1,
"objectsWithErrors": 0,
"objectsWithWarnings": 0
},
"entries": [],
"objects": [
{
"row": 0,
"object": {
"id": "2@1",
"label": "ItemRestTest",
"entityId": 1000
},
"status": [
"UPDATED"
]
}
]
}
Examples based on the sub-entity
POST Characteristic values for Item: lookup value
http://
<
server
>:<
port
>/rest/V2.0/list/Article/ArticleCharacteristicValue
This POST request requires the following request body
{
"columns": [
{
"identifier": "ArticleCharacteristicValueLang.Value"
}
],
"rows": [
{
"object": {
"id": "10126@1"
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "10769"
},
"parentRecordKey": "root",
"language": "-1",
"characteristic": {
"id": "10769",
"label": "LookupRestArticleTestCharacteristic [LookupRestArticleTestCharacteristic]",
"entityId": 8000
}
},
"values": [
[
{
"id": "10617@3",
"label": "ActualLookupValueLabel",
"entityId": 7300
}
]
]
}
]
}
As a result the following answer will be provided
{
"counters": {
"errors": 0,
"warnings": 0,
"createdObjects": 0,
"updatedObjects": 1,
"objectsWithErrors": 0,
"objectsWithWarnings": 0
},
"entries": [],
"objects": [
{
"row": 0,
"object": {
"id": "10126@1",
"label": "ArticleRestTest",
"entityId": 1100
},
"status": [
"UPDATED"
]
}
]
}
POST Characteristic values for Product:: language-dependent string values
http://
<
server
>:<
port
>/rest/V2.0/list/Product2G/Product2GCharacteristicValue
This POST request requires the following request body
{
"columns": [
{
"identifier": "Product2GCharacteristicValueLang.Value"
}
],
"rows": [
{
"object": {
"id": "'RestTestProduct'@'MASTER'"
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "4300"
},
"parentRecordKey": "root",
"language": "de",
"characteristic": {
"id": "4300"
}
},
"values": [
[
"CHANGED German statement"
]
]
},
{
"object": {
"id": "'RestTestProduct'@'MASTER'"
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "4300"
},
"parentRecordKey": "root",
"language": "en",
"characteristic": {
"id": "4300"
}
},
"values": [
[
"CHANGED English statement"
]
]
}
]
}
As a result the following answer will be provided
{
"counters": {
"errors": 0,
"warnings": 0,
"createdObjects": 0,
"updatedObjects": 1,
"objectsWithErrors": 0,
"objectsWithWarnings": 0
},
"entries": [],
"objects": [
{
"row": 0,
"object": {
"id": "158686@1",
"label": "RestTestProduct",
"entityId": 1100
},
"status": [
"UPDATED"
]
}
]
POST Characteristic values for Variant: MIME values
Step 1: Upload MIME zip file
In a first step you have to upload a zip file containing all files that are to be used as MIME values. Details can be found in the chapter REST File API.
The result is needed for the next step.
{
"id": "6942cf90-a4c4-449d-896a-51bdc8e45906",
"originalFilename": "logos.zip"
}
Step 2: Use MIME data to set characteristic values
Important: The uploaded MIME archive can be used for one POST request only, it cannot be re-used for additional requests. So, if that archive contains multiple files, they should all be used within one request.
http://
<
server
>:<
port
>/rest/V2.0/list/Variant/VariantCharacteristicValue
This POST request requires the following request body, the result of the file upload is used as mimeValueArchives value:
{
"columns": [
{
"identifier": "VariantCharacteristicValueLang.Value"
}
],
"rows": [
{
"object": {
"id": "'RestTestVariant'@'MASTER'"
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "4298"
},
"parentRecordKey": "root",
"language": "-1",
"characteristic": {
"id": "4298"
}
},
"values": [
[
{
"relativeFilePath": "logo.png"
}
]
]
},
{
"object": {
"id": "'RestTestVariant2'@'MASTER'"
},
"qualification": {
"recordKey": "0000.0000.RK",
"rootCharacteristic": {
"id": "4298"
},
"parentRecordKey": "root",
"language": "-1",
"characteristic": {
"id": "4298"
}
},
"values": [
[
{
"relativeFilePath": "logo_global.png"
}
]
]
}
],
"mimeValueArchives": [
{
"id": "6942cf90-a4c4-449d-896a-51bdc8e45906",
"originalFilename": "logos.zip"
}
]
}
As a result the following answer will be provided
{
"counters": {
"errors": 0,
"warnings": 0,
"createdObjects": 0,
"updatedObjects": 2,
"objectsWithErrors": 0,
"objectsWithWarnings": 0
},
"entries": [],
"objects": [
{
"row": 0,
"object": {
"id": "158688@1",
"label": "RestTestVariant",
"entityId": 1200
},
"status": [
"UPDATED"
]
},
{
"row": 1,
"object": {
"id": "158689@1",
"label": "RestTestVariant2",
"entityId": 1200
},
"status": [
"UPDATED"
]
}
]
}