Managing Product Data
The products endpoint can be used to create, read, update, and delete products associated with your webshop in Hello Retail's system
The main purpose of this endpoint is to provide you with an alternative to feeds for when you need to update changes to your product data as fast as possible in Hello Retail. Using this endpoint should be an addition to a product feed, not a replacement.
An alternative to using this for quick updates is delta feeds. On some shop platforms where it is difficult to run background tasks, this might be a better solution. The guide for implementing delta feeds can be found here.
To use the endpoint, you need to know your website UUID and have an API key. Log in to your account on https://my.helloretail.com/ and follow these instructions on how to find them.
Endpoints
GET
Fetch product
Request Method: GET
Endpoint: https://core.helloretail.com/api/websites/{websiteUuid}/products?id={encodedProductUrl}&apiKey={apiKey}
Parameters
Path
Name |
Type |
Description |
websiteUuid |
String |
UUID of the website. |
Query
Name |
Type |
Description |
id |
String |
The URL of the product. Remember to URL encode it. |
apiKey |
String |
A valid API key. It can be created on your Hello Retail dashboard. |
Example JavaScript request
fetch(`https://core.helloretail.com/api/websites/${websiteUuid}/products?id=${encodedProductUrl}&apiKey=${apiKey}`, {
method: 'GET',
credentials: 'include',
headers: {
'Content-Type': 'application/json'
},
}).then((res) => {
return res.json();
}).then((data) => {
console.log(data)
});
Responses
200 OK Product Data
{
"data": {
"id": "https://shop.example.com/women/shoes/sneakers/cool-white-sneakers",
"type": "products",
"attributes": {
"url": "https://shop.example.com/women/shoes/sneakers/cool-white-sneakers",
"title": "Cool white sneakers",
"productNumber": 1,
"variantProductNumbers": [1,2,3,4],
"currency": "dkk",
"price": 1337,
"oldPrice": 1227,
"priceExVat": 1000,
"oldPriceExVat": 800,
"brand": "Converse",
"inStock": true,
"ean": 123,
"created": "2023-09-01 07:40:00",
"description": "These shoes are incredible, everyone should own a pair!",
"keywords": "these shoes are cool and white",
"hierarchies": [
[
"Women",
"Shoes",
"Sneakers"
],
[
"Women",
"Outlet",
"Shoes"
]
]
"extraData": {
"color": "white"
},
"extraDataList": {
"size": ["36","37","38","39","40","41","42"]
}
}
}
}
POST
Create product
Request Method: POST
Endpoint: https://core.helloretail.com/api/websites/{websiteUuid}/products?apiKey={apiKey}
Parameters
Path
Name |
Type |
Description |
websiteUuid |
String |
UUID of the website. |
Query
Name |
Type |
Description |
apiKey |
String |
A valid API key. It can be created on your Hello Retail dashboard. |
Body
Name |
Type |
Description |
request body |
JSON |
The product data as JSON. See the example in the response section. |
Example JavaScript request
fetch(`https://core.helloretail.com/api/websites/${websiteUuid}/products?apiKey=${apiKey}`, {
method: 'POST',
credentials: 'include',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
data: {
id: "https://shop.example.com/women/shoes/sneakers/cool-white-sneakers",
type: "products",
attributes: {
title: "Cool white sneakers",
productNumber: 1,
variantProductNumbers: [1,2,3,4],
currency: "dkk",
price: 1337,
oldPrice: 1227,
priceExVat: 1000,
oldPriceExVat: 800,
brand: "Converse",
inStock: true,
ean: 123,
created: "2023-09-01 07:40:00",
description: "These shoes are incredible, everyone should own a pair!",
url: "https://shop.example.com/women/shoes/sneakers/cool-white-sneakers",
hierarchies: [
["Women", "Shoes", "Sneakers"]
],
imgUrl: "https://shop.example.com/women/shoes/sneakers/cool-white-sneakers-image-100x100.jpg",
keywords: "These shoes are cool and white",
extraData: {
color: "white"
},
extraDataList: {
sizes: ["36","37","38","39","40","41","42"]
}
}
}
})
}).then((res) => {
return res.json();
}).then((data) => {
console.log(data)
});
Responses
200 OK Product Data
{
"data": {
"id": "https://shop.example.com/women/shoes/sneakers/cool-white-sneakers",
"type": "products",
"attributes": {
"url": "https://shop.example.com/women/shoes/sneakers/cool-white-sneakers",
"title: "Cool white sneakers",
"productNumber": 1,
"variantProductNumbers": [1,2,3,4],
"currency": "dkk",
"price": 1337,
"oldPrice": 1227,
"priceExVat": 1000,
"oldPriceExVat": 800,
"brand": "Converse",
"inStock": true,
"ean": 123,
"created": "2023-09-01 07:40:00",
"description": "These shoes are incredible, everyone should own a pair!",
"keywords": "these shoes are cool and white",
"hierarchies": [
[
"Women",
"Shoes",
"Sneakers"
],
[
"Women",
"Outlet",
"Shoes"
]
]
"extraData": {
"color": "white"
},
"extraDataList": {
"size": ["36","37","38","39","40","41","42"]
}
}
}
}
PATCH
Update product
Only the fields you send will be updated. To remove a field send the value null
The data should be sent in the request body. Example:
{
"data": {
"id": "http://someshop.com/women/shoes/sneakers/cool-white-sneakers/",
"type": "products",
"attributes": {
"keywords": null,
"price": "320"
}
}
}
Request Method: PATCH
Endpoint: https://core.helloretail.com/api/websites/{websiteUuid}/products?id={encodedProductUrl}&apiKey={apiKey}
Parameters
Path
Name |
Type |
Description |
websiteUuid |
String |
UUID of the website. |
Query
Name |
Type |
Description |
id |
String |
The URL of the product. Remember to URL encode it. |
apiKey |
String |
A valid API key. It can be created on your Hello Retail dashboard. |
Body
Name |
Type |
Description |
request body |
JSON |
The product data as JSON. See the example in the response section. |
Example JavaScript request
fetch(`https://core.helloretail.com/api/websites/${websiteUuid}/products?id=${encodedProductUrl}&apiKey=${apiKey}`, {
method: 'PATCH',
credentials: 'include',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
data: {
id: "https://shop.example.com/women/shoes/sneakers/cool-white-sneakers",
type: "products",
attributes: {
title: "Cool white sneakers 2.0",
productNumber: 1,
variantProductNumbers: [1,2,3,4],
currency: "dkk",
price: 1337,
oldPrice: 1227,
priceExVat: 1000,"
oldPriceExVat: 800,
brand: "Converse",
inStock: true,
ean: 123,
created: "2023-09-01 07:40:00",
description: "These shoes are incredible, everyone should own a pair!",
url: "https://shop.example.com/women/shoes/sneakers/cool-white-sneakers",
hierarchies: [
["Women", "Shoes", "Sneakers"]
],
imgUrl: "https://shop.example.com/women/shoes/sneakers/cool-white-sneakers-image-100x100.jpg",
keywords: "these shoes are cool white sport",
extraData: {
color: "white"
},
extraDataList: {
sizes: ["36","37","38","39"]
}
}
}
})
}).then((res) => {
return res.json();
}).then((data) => {
console.log(data)
});
Responses
200 OK Product Data
{
"data": {
"id": "https://shop.example.com/women/shoes/sneakers/cool-white-sneakers",
"type": "products",
"attributes": {
"title": "Cool white sneakers 2.0",
"productNumber": 1,
"variantProductNumbers": [1,2,3,4],
"currency": "dkk",
"price": 1337,
"oldPrice": 1227,
"priceExVat": 1000,
"oldPriceExVat": 800,
"brand": "Converse",
"inStock": true,
"ean": 123,
"created": "2023-09-01 07:40:00",
"description": "These shoes are incredible, everyone should own a pair!",
"keywords": "these shoes are cool and white",
"hierarchies": [
[
"Women",
"Shoes",
"Sneakers"
],
[
"Women",
"Outlet",
"Shoes"
]
]
"extraData": {
"color": "white"
},
"extraDataList": {
"size": ["36","37","38","39"]
}
}
}
}
DELETE
Delete product
Request Method: DELETE
Endpoint: https://core.helloretail.com/api/websites/{websiteUuid}/products?id={encodedProductUrl}&apiKey={apiKey}
Parameters
Path
Name |
Type |
Description |
websiteUuid |
String |
UUID of the website. |
Query
Name |
Type |
Description |
id |
String |
The URL of the product. Remember to URL encode it. |
apiKey |
String |
A valid API key. It can be created on your Hello Retail dashboard. |
Example JavaScript request
fetch(`https://core.helloretail.com/api/websites/${websiteUuid}/products?id=${encodedProductUrl}&apiKey=${apiKey}`, {
method: 'DELETE',
credentials: 'include',
headers: {
'Content-Type': 'application/json'
},
}).then((res) => {
return res.json();
}).then((data) => {
console.log(data)
});
Responses
200 OK Product Data