Image Metadata
Table of contents
Introduction
Looklet offers the export of image metadata as either XMP or JSON sidecar files together with the final images.
Sidecar File Naming
The sidecar files will be named the same as the image file (but with the .xmp
or .json
extension) and will be stored together with the exported image.
XMP
XMP metadata uses a custom Looklet namespace (http://ns.looklet.com
) and can be embedded in the image files or delivered as XMP sidecar files.
Fields
The XMP metadata uses the http://ns.looklet.com
namespace, with the prefix looklet
. The structure of the data and the type of the fields is described in the table below.
METADATA FIELD | TYPE | DETAILS | ||
---|---|---|---|---|
looklet:itemId | Number | Looklet id of the main item | ||
looklet:externalId | String | Barcode/SKU of the main item | ||
looklet:studio | String | Name of the studio where the main item was shot | ||
looklet:designer | String | Name of the designer | ||
looklet:category | String | The category of the main item | ||
looklet:batches | Array of Strings | The names of the batches the item belongs to | ||
looklet:colorLabel | Strings | Color label (shown in Look Creator) | ||
looklet:exportType | String | One of: LOOK , GHOST , FABRIC_DETAIL , LOOK_DETAIL , CUT_OUT | ||
looklet:pose | String | Looklet pose - Ella / Elena / David etc. | ||
looklet:angle | String | Only available for exportType=LOOK | ||
looklet:imageName | String | |||
looklet:model | looklet:modelName | String | Only available for exportType=LOOK | |
looklet:modelExpiry | String | Date formatted as YYYY-MM-DD | ||
looklet:modelExpiryTimestamp | Number | UNIX Epoch time | ||
looklet:modelLicenseNotes | String | A free text field containing notes about this model license | ||
looklet:background | looklet:id | Number | Only available for exportType=LOOK | |
looklet:variantId | Number | |||
looklet:stylingItems | Array | List of styling items used in lookOnly available for exportType=LOOK | ||
looklet:itemId | Number | Looklet id of the styling item | ||
looklet:externalId | String | Barcode/SKU of the styling item | ||
looklet:designer | String | Name of the designer | ||
looklet:category | String | The category of the styling item | ||
looklet:batches | Array of Strings | The names of the batches the styling item belongs to | ||
looklet:customProperties | Array | Custom properties defined by the customer for the styling item, in key-value pairs. | ||
looklet:key :looklet:value | String : String | |||
looklet:createdBy | looklet:name * | String | Personal information, optional | |
looklet:email * | String | Personal information, optional | ||
looklet:timestamp | Number | UNIX Epoch time | ||
looklet:exportedBy | looklet:name * | String | Personal information, optional | |
looklet:email * | String | Personal information, optional | ||
looklet:timestamp | Number | UNIX Epoch time | ||
looklet:customProperties | Array | Custom properties defined by the customer for main item, in key-value pairs | ||
looklet:key :looklet:value | String : String | |||
looklet:comments | Array | List of comments for main item | ||
looklet:commentAuthor | looklet:name * | String | Personal information, optional | |
looklet:email * | String | Personal information, optional | ||
looklet:timestamp | String | UNIX Epoch time | ||
looklet:commentText | String |
* Personal Information
It is possible to configure whether to include personal information (names and email addresses) in the metadata
Examples
Look image metadata without personal information
- Image file
ABCD-1234_1_1.jpg
- Sidecar file
ABCD-1234_1_1.xmp
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.1.11">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:looklet="http://ns.looklet.com">
<looklet:itemId>1234</looklet:itemId>
<looklet:externalId>ABCD-1234</looklet:externalId>
<looklet:studio>Studio 1</looklet:studio>
<looklet:designer>DesignerName</looklet:designer>
<looklet:category>Blouse</looklet:category>
<looklet:batches>
<rdf:Bag>
<rdf:li>example-batch1</rdf:li>
<rdf:li>example-batch2</rdf:li>
</rdf:Bag>
</looklet:batches>
<looklet:colorLabel>GREEN</looklet:colorLabel>
<looklet:exportType>LOOK</looklet:exportType>
<looklet:pose>Elena</looklet:pose>
<looklet:angle>Front</looklet:angle>
<looklet:imageName>ABCD-1234_1_1</looklet:imageName>
<looklet:model>
<rdf:Description>
<looklet:modelName>Elena E1</looklet:modelName>
<looklet:modelExpiry>2028-03-01</looklet:modelExpiry>
<looklet:modelExpiryTimestamp>1835478000000</looklet:modelExpiryTimestamp>
<looklet:modelLicenseNotes>Print: Yes
Shoot Date: October 4, 2019
An additional extension of 4 years will begin automatically.
The contract has been extended for an additional 4 years on 2 May, 2023
Product can stay online until sell-through
</looklet:modelLicenseNotes>
</rdf:Description>
</looklet:model>
<looklet:background>
<rdf:Description>
<looklet:backgroundId>1234</looklet:backgroundId>
<looklet:backgroundVariantId>4567</looklet:backgroundVariantId>
</rdf:Description>
</looklet:background>
<looklet:stylingItems>
<rdf:Bag>
<rdf:li>
<rdf:Description>
<looklet:itemId>1255</looklet:itemId>
<looklet:externalId>DEF-456</looklet:externalId>
<looklet:designer>DesignerName</looklet:designer>
<looklet:category>Pants</looklet:category>
<looklet:batches>
<rdf:Bag>
<rdf:li>example-batch1</rdf:li>
<rdf:li>example-batch2</rdf:li>
</rdf:Bag>
</looklet:batches>
<looklet:customProperties>
<rdf:Bag>
<rdf:li>
<rdf:Description>
<looklet:key>CustomDate</looklet:key>
<looklet:value>2024-01-20</looklet:value>
</rdf:Description>
</rdf:li>
</rdf:Bag>
</looklet:customProperties>
</rdf:Description>
</rdf:li>
<rdf:li>
<rdf:Description>
<looklet:itemId>1431</looklet:itemId>
<looklet:externalId>GHI-789</looklet:externalId>
<looklet:designer>DesignerName</looklet:designer>
<looklet:category>Shoes</looklet:category>
<looklet:batches>
<rdf:Bag>
<rdf:li>example-batch1</rdf:li>
<rdf:li>example-batch2</rdf:li>
</rdf:Bag>
</looklet:batches>
</rdf:Description>
</rdf:li>
</rdf:Bag>
</looklet:stylingItems>
<looklet:createdBy>
<rdf:Description>
<looklet:timestamp>1690359182774</looklet:timestamp>
</rdf:Description>
</looklet:createdBy>
<looklet:exportedBy>
<rdf:Description>
<looklet:timestamp>1690542300804</looklet:timestamp>
</rdf:Description>
</looklet:exportedBy>
<looklet:customProperties>
<rdf:Bag>
<rdf:li>
<rdf:Description>
<looklet:key>CustomDate</looklet:key>
<looklet:value>2024-01-20</looklet:value>
</rdf:Description>
</rdf:li>
<rdf:li>
<rdf:Description>
<looklet:key>CustomNumber1</looklet:key>
<looklet:value>105</looklet:value>
</rdf:Description>
</rdf:li>
<rdf:li>
<rdf:Description>
<looklet:key>CustomNumber2</looklet:key>
<looklet:value>3.14</looklet:value>
</rdf:Description>
</rdf:li>
<rdf:li>
<rdf:Description>
<looklet:key>CustomBoolean1</looklet:key>
<looklet:value>True</looklet:value>
</rdf:Description>
</rdf:li>
<rdf:li>
<rdf:Description>
<looklet:key>CustomBoolean2</looklet:key>
<looklet:value>False</looklet:value>
</rdf:Description>
</rdf:li>
<rdf:li>
<rdf:Description>
<looklet:key>CustomString1</looklet:key>
<looklet:value>Custom String Here</looklet:value>
</rdf:Description>
</rdf:li>
<rdf:li>
<rdf:Description>
<looklet:key>CustomString2</looklet:key>
<looklet:value></looklet:value>
</rdf:Description>
</rdf:li>
</rdf:Bag>
</looklet:customProperties>
<looklet:comments>
<rdf:Bag>
<rdf:li>
<rdf:Description>
<looklet:commentText>Comment text</looklet:commentText>
<looklet:commentAuthor>
<rdf:Description>
<looket:timestamp>1690359182774</looket:timestamp>
</rdf:Description>
</looklet:commentAuthor>
</rdf:Description>
</rdf:li>
</rdf:Bag>
</looklet:comments>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="r"?>
Ghost image metadata with personal information
- Image file
ABCD-1234_ghost_1.png
- Sidecar file
ABCD-1234_ghost_1.xmp
<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 6.1.11">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:looklet="http://ns.looklet.com">
<looklet:itemId>1234</looklet:itemId>
<looklet:externalId>ABCD-1234</looklet:externalId>
<looklet:studio>Studio 1</looklet:studio>
<looklet:designer>DesignerName</looklet:designer>
<looklet:category>Dress</looklet:category>
<looklet:batches>
<rdf:Bag>
<rdf:li>example-batch1</rdf:li>
<rdf:li>example-batch2</rdf:li>
</rdf:Bag>
</looklet:batches>
<looklet:colorLabel>GREEN</looklet:colorLabel>
<looklet:exportType>GHOST</looklet:exportType>
<looklet:pose>Elena</looklet:pose>
<looklet:imageName>ABCD-1234_ghost_1</looklet:imageName>
<looklet:createdBy>
<rdf:Description>
<looklet:name>John Doe</looklet:name>
<looklet:email>john@doe.com</looklet:email>
<looklet:timestamp>1690359182774</looklet:timestamp>
</rdf:Description>
</looklet:createdBy>
<looklet:exportedBy>
<rdf:Description>
<looklet:name>John Doe</looklet:name>
<looklet:email>john@doe.com</looklet:email>
<looklet:timestamp>1715803584432</looklet:timestamp>
</rdf:Description>
</looklet:exportedBy>
<looklet:customProperties>
<rdf:Bag>
<rdf:li>
<rdf:Description>
<looklet:key>CustomDate</looklet:key>
<looklet:value>2024-01-20</looklet:value>
</rdf:Description>
</rdf:li>
<rdf:li>
<rdf:Description>
<looklet:key>CustomNumber1</looklet:key>
<looklet:value>105</looklet:value>
</rdf:Description>
</rdf:li>
<rdf:li>
<rdf:Description>
<looklet:key>CustomNumber2</looklet:key>
<looklet:value>3.14</looklet:value>
</rdf:Description>
</rdf:li>
<rdf:li>
<rdf:Description>
<looklet:key>CustomBoolean1</looklet:key>
<looklet:value>True</looklet:value>
</rdf:Description>
</rdf:li>
<rdf:li>
<rdf:Description>
<looklet:key>CustomBoolean2</looklet:key>
<looklet:value>False</looklet:value>
</rdf:Description>
</rdf:li>
<rdf:li>
<rdf:Description>
<looklet:key>CustomString1</looklet:key>
<looklet:value>Custom String Here</looklet:value>
</rdf:Description>
</rdf:li>
<rdf:li>
<rdf:Description>
<looklet:key>CustomString2</looklet:key>
<looklet:value></looklet:value>
</rdf:Description>
</rdf:li>
</rdf:Bag>
</looklet:customProperties>
<looklet:comments>
<rdf:Bag>
<rdf:li>
<rdf:Description>
<looklet:commentText>Comment text</looklet:commentText>
<looklet:commentAuthor>
<rdf:Description>
<looklet:name>John Doe</looklet:name>
<looklet:email>john@doe.com</looklet:email>
<looket:timestamp>1690359182774</looket:timestamp>
</rdf:Description>
</looklet:commentAuthor>
</rdf:Description>
</rdf:li>
</rdf:Bag>
</looklet:comments>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
<?xpacket end="r"?>
JSON
Fields
The JSON sidecar file will include the fields listed in the table below.
METADATA FIELD | JSON TYPE | DETAILS | ||
---|---|---|---|---|
itemId | Number | Looklet id of the main item | ||
externalId | String | Barcode/SKU of the main item | ||
studio | String | Name of the studio where the main item was shot | ||
designer | String | Name of the designer | ||
category | String | The category of the main item | ||
batches | Array of Strings | Comma-separated list of batch names | ||
colorLabel | Strings | Color label (shown in Look Creator) | ||
exportType | String | One of: LOOK , GHOST , FABRIC_DETAIL , LOOK_DETAIL , CUT_OUT | ||
pose | String | Looklet pose - Ella / Elena / David etc. | ||
angle | String | Only available for exportType=LOOK | ||
imageName | String | |||
model | modelName | String | Only available for exportType=LOOK | |
id | Number | |||
variantId | Number | |||
modelExpiry | String | Date formatted as yyyy-MM-dd | ||
modelExpiryTimestamp | Number | UNIX Epoch time | ||
modelLicenseNotes | String | A free text field containing notes about this model license. | ||
scene# | id | Number | Only available for exportType=LOOK | |
variantId | Number | |||
stylingItems | Array | List of styling items used in look Only available for exportType=LOOK | ||
itemId | Number | Looklet id of the styling item | ||
variantId | Number | Looklet variant id of the styling item | ||
externalId | String | Barcode/SKU of the styling item | ||
studio | String | Name of the studio where the styling item was shot | ||
designer | String | Name of the designer | ||
category | String | The category of the styling item | ||
batches | Array of Strings | Comma-separated list of batch names | ||
createdBy | name * | String | Personal information, optional | |
email * | String | Personal information, optional | ||
timestamp | Number | UNIX Epoch time | ||
customProperties | Array | Custom properties defined by the customer for the styling item, in key-value pairs. | ||
<key> :<value> | String : String | |||
createdBy | name * | String | Personal information, optional | |
email * | String | Personal information, optional | ||
timestamp | Number | UNIX Epoch time | ||
exportedBy | name * | String | Personal information, optional | |
email * | String | Personal information, optional | ||
timestamp | Number | UNIX Epoch time | ||
customProperties | Array | Custom properties defined by the customer for main item, in key-value pairs. | ||
<key> :<value> | String : String | |||
comments | Array | List of comments for main item. | ||
createdBy | name * | String | Personal information, optional | |
email * | String | Personal information, optional | ||
timestamp | Number | UNIX Epoch time | ||
comment | String |
* Personal Information
It is possible to configure whether to include personal information (names and email addresses) in the metadata files
Examples
Look image metadata without personal information
- Image file
ABCD-1234_1_1.jpg
- Sidecar file
ABCD-1234_1_1.json
{
"itemId": 1234,
"externalId": "ABCD-1234",
"studio": "Studio 1",
"designer": "DesignerName",
"category": "Blouse",
"batches": [
"example-batch1",
"example-batch2"
],
"colorLabel": "GREEN",
"exportType": "LOOK",
"pose": "Elena",
"angle": "Front",
"imageName": "ABCD-1234_1_1",
"model": {
"id": 1234,
"variantId": 3456,
"modelName": "Elena E1",
"modelExpiry": "2024-12-31",
"modelExpiryTimestamp": 1697625200000,
"modelLicenseNotes": "Print: Yes\nShoot Date: October 4, 2019\nUsage shall start 6 months from the shoot date"
},
"scene": {
"id": 1234,
"variantId": 4567
},
"stylingItems": [
{
"itemId": 1255,
"variantId": 12551,
"externalId": "DEF-456",
"studio": "Studio 1",
"designer": "DesignerName",
"category": "Pants",
"batches": [
"example-batch1",
"example-batch2"
],
"createdBy": {
"timestamp": 1510669991846
},
"customProperties": {
"CustomDate1": "2020-06-20",
"CustomDate2": "2020-12-31",
"CustomNumber1": "105",
"CustomNumber2": "20",
"CustomBoolean1": "True",
"CustomBoolean2": "False",
"CustomString1": "Custom String Here",
"CustomString2": ""
}
},
{
"itemId": 1431,
"variantId": 14311,
"externalId": "GHI-789",
"studio": "Studio 1",
"designer": "DesignerName",
"category": "Shoes",
"batches": [
"example-batch1",
"example-batch2"
],
"createdBy": {
"timestamp": 1566920909148
},
"customProperties": {
"CustomDate1": "2020-03-20",
"CustomDate2": "2020-10-31",
"CustomNumber1": "1050",
"CustomNumber2": "15.5",
"CustomBoolean1": "True",
"CustomBoolean2": "False",
"CustomString1": "Custom String Here",
"CustomString2": ""
}
}
],
"createdBy": {
"timestamp": 1566920909148
},
"exportedBy": {
"timestamp": 1567094931323
},
"customProperties": {
"CustomDate1": "2020-01-20",
"CustomDate2": "2020-12-31",
"CustomNumber1": "105",
"CustomNumber2": "3.14",
"CustomBoolean1": "True",
"CustomBoolean2": "False",
"CustomString1": "Custom String Here",
"CustomString2": ""
},
"comments": [
{
"timestamp": 1456996672,
"comment": "Comment text"
}
]
}
Ghost image metadata with personal information
- Image file
ABCD-1234_ghost_1.png
- Sidecar file
ABCD-1234_ghost_1.json
{
"itemId": 1234,
"externalId": "ABCD-1234",
"studio": "Studio 1",
"designer": "DesignerName",
"category": "Dress",
"batches": [
"example-batch1",
"example-batch2"
],
"colorLabel": "GREEN",
"exportType": "GHOST",
"pose": "Elena",
"imageName": "ABCD-1234_ghost_1",
"createdBy": {
"name": "John Doe",
"email": "john@doe.com",
"timestamp": 1566920909148
},
"exportedBy": {
"name": "John Doe",
"email": "john@doe.com",
"timestamp": 1567094931323
},
"customProperties": {
"CustomDate1": "2020-01-20",
"CustomDate2": "2020-12-31",
"CustomNumber1": "105",
"CustomNumber2": "3.14",
"CustomBoolean1": "True",
"CustomBoolean2": "False",
"CustomString1": "Custom String Here",
"CustomString2": ""
},
"comments": [
{
"createdBy": {
"name": "John Doe",
"email": "john@doe.com"
},
"timestamp": 1456996672,
"comment": "Comment text"
}
]
}