curl --request POST \
--url https://api.hit-pay.com/v1/products \
--header 'Content-Type: multipart/form-data' \
--header 'X-BUSINESS-API-KEY: <x-business-api-key>' \
--form 'name=Product Beanie' \
--form price=15 \
--form 'description=<p>Stylish hat suitable for the winter.</p>' \
--form barcode=1234567890123 \
--form 'headline=Stylish hat suitable for the winter.' \
--form stock_keeping_unit=SKU123456 \
--form quantity=1 \
--form quantity_alert_level=1 \
--form currency=sgd \
--form category_ids=9a12fab0-d282-4437-9460-c3d26662d11a \
--form location_ids=9a12fab4-d112-48af-9d6b-050d650b0a25 \
--form 'locations={
"id": "9a12fab4-d112-48af-9d6b-050d650b0a25",
"manage_inventory": "1",
"quantity": 1,
"quantity_alert_level": 1
}' \
--form open_amount=0 \
--form is_manageable=1 \
--form is_pinned=0 \
--form product_weight=250 \
--form delivery_method_required=true \
--form 'variations={
"price": 123,
"quantity": 123,
"quantity_alert_level": 123,
"image": "<string>",
"product_variation_weight": 123,
"variation_value_1": "<string>",
"variation_value_2": "<string>",
"variation_value_3": "<string>"
}' \
--form 'image={
"image": "<string>"
}' \
--form publish=1 \
--form variations.items.image='@example-file' \
--form image.items.image='@example-file'import requests
url = "https://api.hit-pay.com/v1/products"
files = {
"variations.items.image": ("example-file", open("example-file", "rb")),
"image.items.image": ("example-file", open("example-file", "rb"))
}
payload = {
"name": "Product Beanie",
"price": "15",
"description": "<p>Stylish hat suitable for the winter.</p>",
"barcode": "1234567890123",
"headline": "Stylish hat suitable for the winter.",
"stock_keeping_unit": "SKU123456",
"quantity": "1",
"quantity_alert_level": "1",
"currency": "sgd",
"category_ids": "9a12fab0-d282-4437-9460-c3d26662d11a",
"location_ids": "9a12fab4-d112-48af-9d6b-050d650b0a25",
"locations": "{
\"id\": \"9a12fab4-d112-48af-9d6b-050d650b0a25\",
\"manage_inventory\": \"1\",
\"quantity\": 1,
\"quantity_alert_level\": 1
}",
"open_amount": "0",
"is_manageable": "1",
"is_pinned": "0",
"product_weight": "250",
"delivery_method_required": "true",
"variations": "{
\"price\": 123,
\"quantity\": 123,
\"quantity_alert_level\": 123,
\"image\": \"<string>\",
\"product_variation_weight\": 123,
\"variation_value_1\": \"<string>\",
\"variation_value_2\": \"<string>\",
\"variation_value_3\": \"<string>\"
}",
"image": "{
\"image\": \"<string>\"
}",
"publish": "1"
}
headers = {"X-BUSINESS-API-KEY": "<x-business-api-key>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('name', 'Product Beanie');
form.append('price', '15');
form.append('description', '<p>Stylish hat suitable for the winter.</p>');
form.append('barcode', '1234567890123');
form.append('headline', 'Stylish hat suitable for the winter.');
form.append('stock_keeping_unit', 'SKU123456');
form.append('quantity', '1');
form.append('quantity_alert_level', '1');
form.append('currency', 'sgd');
form.append('category_ids', '9a12fab0-d282-4437-9460-c3d26662d11a');
form.append('location_ids', '9a12fab4-d112-48af-9d6b-050d650b0a25');
form.append('locations', '{
"id": "9a12fab4-d112-48af-9d6b-050d650b0a25",
"manage_inventory": "1",
"quantity": 1,
"quantity_alert_level": 1
}');
form.append('open_amount', '0');
form.append('is_manageable', '1');
form.append('is_pinned', '0');
form.append('product_weight', '250');
form.append('delivery_method_required', 'true');
form.append('variations', '{
"price": 123,
"quantity": 123,
"quantity_alert_level": 123,
"image": "<string>",
"product_variation_weight": 123,
"variation_value_1": "<string>",
"variation_value_2": "<string>",
"variation_value_3": "<string>"
}');
form.append('image', '{
"image": "<string>"
}');
form.append('publish', '1');
form.append('variations.items.image', '{
"fileName": "example-file"
}');
form.append('image.items.image', '{
"fileName": "example-file"
}');
const options = {method: 'POST', headers: {'X-BUSINESS-API-KEY': '<x-business-api-key>'}};
options.body = form;
fetch('https://api.hit-pay.com/v1/products', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hit-pay.com/v1/products",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nProduct Beanie\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"price\"\r\n\r\n15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n<p>Stylish hat suitable for the winter.</p>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"barcode\"\r\n\r\n1234567890123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"headline\"\r\n\r\nStylish hat suitable for the winter.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"stock_keeping_unit\"\r\n\r\nSKU123456\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity_alert_level\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"currency\"\r\n\r\nsgd\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"category_ids\"\r\n\r\n9a12fab0-d282-4437-9460-c3d26662d11a\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"location_ids\"\r\n\r\n9a12fab4-d112-48af-9d6b-050d650b0a25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"locations\"\r\n\r\n{\r\n \"id\": \"9a12fab4-d112-48af-9d6b-050d650b0a25\",\r\n \"manage_inventory\": \"1\",\r\n \"quantity\": 1,\r\n \"quantity_alert_level\": 1\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"open_amount\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_manageable\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_pinned\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"product_weight\"\r\n\r\n250\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"delivery_method_required\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"variations\"\r\n\r\n{\r\n \"price\": 123,\r\n \"quantity\": 123,\r\n \"quantity_alert_level\": 123,\r\n \"image\": \"<string>\",\r\n \"product_variation_weight\": 123,\r\n \"variation_value_1\": \"<string>\",\r\n \"variation_value_2\": \"<string>\",\r\n \"variation_value_3\": \"<string>\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"\r\n\r\n{\r\n \"image\": \"<string>\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"publish\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"variations.items.image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image.items.image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"X-BUSINESS-API-KEY: <x-business-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.hit-pay.com/v1/products"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nProduct Beanie\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"price\"\r\n\r\n15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n<p>Stylish hat suitable for the winter.</p>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"barcode\"\r\n\r\n1234567890123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"headline\"\r\n\r\nStylish hat suitable for the winter.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"stock_keeping_unit\"\r\n\r\nSKU123456\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity_alert_level\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"currency\"\r\n\r\nsgd\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"category_ids\"\r\n\r\n9a12fab0-d282-4437-9460-c3d26662d11a\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"location_ids\"\r\n\r\n9a12fab4-d112-48af-9d6b-050d650b0a25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"locations\"\r\n\r\n{\r\n \"id\": \"9a12fab4-d112-48af-9d6b-050d650b0a25\",\r\n \"manage_inventory\": \"1\",\r\n \"quantity\": 1,\r\n \"quantity_alert_level\": 1\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"open_amount\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_manageable\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_pinned\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"product_weight\"\r\n\r\n250\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"delivery_method_required\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"variations\"\r\n\r\n{\r\n \"price\": 123,\r\n \"quantity\": 123,\r\n \"quantity_alert_level\": 123,\r\n \"image\": \"<string>\",\r\n \"product_variation_weight\": 123,\r\n \"variation_value_1\": \"<string>\",\r\n \"variation_value_2\": \"<string>\",\r\n \"variation_value_3\": \"<string>\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"\r\n\r\n{\r\n \"image\": \"<string>\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"publish\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"variations.items.image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image.items.image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-BUSINESS-API-KEY", "<x-business-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.hit-pay.com/v1/products")
.header("X-BUSINESS-API-KEY", "<x-business-api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nProduct Beanie\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"price\"\r\n\r\n15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n<p>Stylish hat suitable for the winter.</p>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"barcode\"\r\n\r\n1234567890123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"headline\"\r\n\r\nStylish hat suitable for the winter.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"stock_keeping_unit\"\r\n\r\nSKU123456\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity_alert_level\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"currency\"\r\n\r\nsgd\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"category_ids\"\r\n\r\n9a12fab0-d282-4437-9460-c3d26662d11a\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"location_ids\"\r\n\r\n9a12fab4-d112-48af-9d6b-050d650b0a25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"locations\"\r\n\r\n{\r\n \"id\": \"9a12fab4-d112-48af-9d6b-050d650b0a25\",\r\n \"manage_inventory\": \"1\",\r\n \"quantity\": 1,\r\n \"quantity_alert_level\": 1\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"open_amount\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_manageable\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_pinned\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"product_weight\"\r\n\r\n250\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"delivery_method_required\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"variations\"\r\n\r\n{\r\n \"price\": 123,\r\n \"quantity\": 123,\r\n \"quantity_alert_level\": 123,\r\n \"image\": \"<string>\",\r\n \"product_variation_weight\": 123,\r\n \"variation_value_1\": \"<string>\",\r\n \"variation_value_2\": \"<string>\",\r\n \"variation_value_3\": \"<string>\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"\r\n\r\n{\r\n \"image\": \"<string>\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"publish\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"variations.items.image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image.items.image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hit-pay.com/v1/products")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-BUSINESS-API-KEY"] = '<x-business-api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nProduct Beanie\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"price\"\r\n\r\n15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n<p>Stylish hat suitable for the winter.</p>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"barcode\"\r\n\r\n1234567890123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"headline\"\r\n\r\nStylish hat suitable for the winter.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"stock_keeping_unit\"\r\n\r\nSKU123456\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity_alert_level\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"currency\"\r\n\r\nsgd\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"category_ids\"\r\n\r\n9a12fab0-d282-4437-9460-c3d26662d11a\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"location_ids\"\r\n\r\n9a12fab4-d112-48af-9d6b-050d650b0a25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"locations\"\r\n\r\n{\r\n \"id\": \"9a12fab4-d112-48af-9d6b-050d650b0a25\",\r\n \"manage_inventory\": \"1\",\r\n \"quantity\": 1,\r\n \"quantity_alert_level\": 1\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"open_amount\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_manageable\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_pinned\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"product_weight\"\r\n\r\n250\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"delivery_method_required\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"variations\"\r\n\r\n{\r\n \"price\": 123,\r\n \"quantity\": 123,\r\n \"quantity_alert_level\": 123,\r\n \"image\": \"<string>\",\r\n \"product_variation_weight\": 123,\r\n \"variation_value_1\": \"<string>\",\r\n \"variation_value_2\": \"<string>\",\r\n \"variation_value_3\": \"<string>\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"\r\n\r\n{\r\n \"image\": \"<string>\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"publish\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"variations.items.image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image.items.image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"id": "9a12fab4-d112-48af-9d6b-050d650b0a25",
"business_id": "9130c422-bf97-4bd1-b370-07a3a6f40708",
"category_id": [
"9a12fab0-d282-4437-9460-c3d26662d11a"
],
"name": "Beanie",
"headline": null,
"description": "<p>Stylish hat suitable for the winter.</p>",
"currency": "SGD",
"price": 15,
"price_display": "SGD 15.00",
"price_stored": 1500,
"tax_id": null,
"is_manageable": 1,
"is_pinned": false,
"status": "published",
"product_weight": 250,
"delivery_method_required": true,
"has_variations": true,
"is_shopify": false,
"product_url": "<string>",
"variations_count": 2,
"variations": [
{
"id": "9a12fab4-d998-44ea-ad11-8753be88a1c9",
"stock_keeping_unit": null,
"description": "Medium",
"weight": null,
"length": null,
"width": null,
"depth": null,
"price": 18,
"price_display": "SGD 18.00",
"price_stored": 1800,
"quantity": 150,
"quantity_alert_level": 10,
"product_variation_weight": 250,
"variation_value_1": "Medium",
"variation_value_2": null,
"variation_value_3": null
},
{
"id": "9a12fab4-dd20-4f8f-9e74-de28629f863a",
"stock_keeping_unit": null,
"description": "Large",
"weight": null,
"length": null,
"width": null,
"depth": null,
"price": 20,
"price_display": "SGD 20.00",
"price_stored": 2000,
"quantity": 148,
"quantity_alert_level": 10,
"product_variation_weight": 255,
"variation_value_1": "Large",
"variation_value_2": null,
"variation_value_3": null
}
],
"variation_key_1": "Size",
"variation_key_2": null,
"variation_key_3": null,
"images": [
{
"id": "9a12fab6-1e76-448e-8c45-e84e2e38f294",
"caption": "Beanie",
"url": "<string>",
"other_dimensions": [
{
"size": "icon",
"path": "<string>"
},
{
"size": "large",
"path": "<string>"
},
{
"size": "small",
"path": "<string>"
},
{
"size": "medium",
"path": "<string>"
},
{
"size": "thumbnail",
"path": "<string>"
}
]
}
],
"is_published": true,
"created_at": "2023-09-07T13:04:22+08:00",
"updated_at": "2023-09-18T14:36:54+08:00",
"starts_at": null,
"ends_at": null
}"{\"message\":\"The given data was invalid.\",\"errors\":{\"name\":[\"The name field is required.\"]}}"Create Product
Create a new product with name, price, and optional variants
curl --request POST \
--url https://api.hit-pay.com/v1/products \
--header 'Content-Type: multipart/form-data' \
--header 'X-BUSINESS-API-KEY: <x-business-api-key>' \
--form 'name=Product Beanie' \
--form price=15 \
--form 'description=<p>Stylish hat suitable for the winter.</p>' \
--form barcode=1234567890123 \
--form 'headline=Stylish hat suitable for the winter.' \
--form stock_keeping_unit=SKU123456 \
--form quantity=1 \
--form quantity_alert_level=1 \
--form currency=sgd \
--form category_ids=9a12fab0-d282-4437-9460-c3d26662d11a \
--form location_ids=9a12fab4-d112-48af-9d6b-050d650b0a25 \
--form 'locations={
"id": "9a12fab4-d112-48af-9d6b-050d650b0a25",
"manage_inventory": "1",
"quantity": 1,
"quantity_alert_level": 1
}' \
--form open_amount=0 \
--form is_manageable=1 \
--form is_pinned=0 \
--form product_weight=250 \
--form delivery_method_required=true \
--form 'variations={
"price": 123,
"quantity": 123,
"quantity_alert_level": 123,
"image": "<string>",
"product_variation_weight": 123,
"variation_value_1": "<string>",
"variation_value_2": "<string>",
"variation_value_3": "<string>"
}' \
--form 'image={
"image": "<string>"
}' \
--form publish=1 \
--form variations.items.image='@example-file' \
--form image.items.image='@example-file'import requests
url = "https://api.hit-pay.com/v1/products"
files = {
"variations.items.image": ("example-file", open("example-file", "rb")),
"image.items.image": ("example-file", open("example-file", "rb"))
}
payload = {
"name": "Product Beanie",
"price": "15",
"description": "<p>Stylish hat suitable for the winter.</p>",
"barcode": "1234567890123",
"headline": "Stylish hat suitable for the winter.",
"stock_keeping_unit": "SKU123456",
"quantity": "1",
"quantity_alert_level": "1",
"currency": "sgd",
"category_ids": "9a12fab0-d282-4437-9460-c3d26662d11a",
"location_ids": "9a12fab4-d112-48af-9d6b-050d650b0a25",
"locations": "{
\"id\": \"9a12fab4-d112-48af-9d6b-050d650b0a25\",
\"manage_inventory\": \"1\",
\"quantity\": 1,
\"quantity_alert_level\": 1
}",
"open_amount": "0",
"is_manageable": "1",
"is_pinned": "0",
"product_weight": "250",
"delivery_method_required": "true",
"variations": "{
\"price\": 123,
\"quantity\": 123,
\"quantity_alert_level\": 123,
\"image\": \"<string>\",
\"product_variation_weight\": 123,
\"variation_value_1\": \"<string>\",
\"variation_value_2\": \"<string>\",
\"variation_value_3\": \"<string>\"
}",
"image": "{
\"image\": \"<string>\"
}",
"publish": "1"
}
headers = {"X-BUSINESS-API-KEY": "<x-business-api-key>"}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('name', 'Product Beanie');
form.append('price', '15');
form.append('description', '<p>Stylish hat suitable for the winter.</p>');
form.append('barcode', '1234567890123');
form.append('headline', 'Stylish hat suitable for the winter.');
form.append('stock_keeping_unit', 'SKU123456');
form.append('quantity', '1');
form.append('quantity_alert_level', '1');
form.append('currency', 'sgd');
form.append('category_ids', '9a12fab0-d282-4437-9460-c3d26662d11a');
form.append('location_ids', '9a12fab4-d112-48af-9d6b-050d650b0a25');
form.append('locations', '{
"id": "9a12fab4-d112-48af-9d6b-050d650b0a25",
"manage_inventory": "1",
"quantity": 1,
"quantity_alert_level": 1
}');
form.append('open_amount', '0');
form.append('is_manageable', '1');
form.append('is_pinned', '0');
form.append('product_weight', '250');
form.append('delivery_method_required', 'true');
form.append('variations', '{
"price": 123,
"quantity": 123,
"quantity_alert_level": 123,
"image": "<string>",
"product_variation_weight": 123,
"variation_value_1": "<string>",
"variation_value_2": "<string>",
"variation_value_3": "<string>"
}');
form.append('image', '{
"image": "<string>"
}');
form.append('publish', '1');
form.append('variations.items.image', '{
"fileName": "example-file"
}');
form.append('image.items.image', '{
"fileName": "example-file"
}');
const options = {method: 'POST', headers: {'X-BUSINESS-API-KEY': '<x-business-api-key>'}};
options.body = form;
fetch('https://api.hit-pay.com/v1/products', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.hit-pay.com/v1/products",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nProduct Beanie\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"price\"\r\n\r\n15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n<p>Stylish hat suitable for the winter.</p>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"barcode\"\r\n\r\n1234567890123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"headline\"\r\n\r\nStylish hat suitable for the winter.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"stock_keeping_unit\"\r\n\r\nSKU123456\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity_alert_level\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"currency\"\r\n\r\nsgd\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"category_ids\"\r\n\r\n9a12fab0-d282-4437-9460-c3d26662d11a\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"location_ids\"\r\n\r\n9a12fab4-d112-48af-9d6b-050d650b0a25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"locations\"\r\n\r\n{\r\n \"id\": \"9a12fab4-d112-48af-9d6b-050d650b0a25\",\r\n \"manage_inventory\": \"1\",\r\n \"quantity\": 1,\r\n \"quantity_alert_level\": 1\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"open_amount\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_manageable\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_pinned\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"product_weight\"\r\n\r\n250\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"delivery_method_required\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"variations\"\r\n\r\n{\r\n \"price\": 123,\r\n \"quantity\": 123,\r\n \"quantity_alert_level\": 123,\r\n \"image\": \"<string>\",\r\n \"product_variation_weight\": 123,\r\n \"variation_value_1\": \"<string>\",\r\n \"variation_value_2\": \"<string>\",\r\n \"variation_value_3\": \"<string>\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"\r\n\r\n{\r\n \"image\": \"<string>\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"publish\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"variations.items.image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image.items.image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"X-BUSINESS-API-KEY: <x-business-api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.hit-pay.com/v1/products"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nProduct Beanie\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"price\"\r\n\r\n15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n<p>Stylish hat suitable for the winter.</p>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"barcode\"\r\n\r\n1234567890123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"headline\"\r\n\r\nStylish hat suitable for the winter.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"stock_keeping_unit\"\r\n\r\nSKU123456\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity_alert_level\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"currency\"\r\n\r\nsgd\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"category_ids\"\r\n\r\n9a12fab0-d282-4437-9460-c3d26662d11a\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"location_ids\"\r\n\r\n9a12fab4-d112-48af-9d6b-050d650b0a25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"locations\"\r\n\r\n{\r\n \"id\": \"9a12fab4-d112-48af-9d6b-050d650b0a25\",\r\n \"manage_inventory\": \"1\",\r\n \"quantity\": 1,\r\n \"quantity_alert_level\": 1\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"open_amount\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_manageable\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_pinned\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"product_weight\"\r\n\r\n250\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"delivery_method_required\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"variations\"\r\n\r\n{\r\n \"price\": 123,\r\n \"quantity\": 123,\r\n \"quantity_alert_level\": 123,\r\n \"image\": \"<string>\",\r\n \"product_variation_weight\": 123,\r\n \"variation_value_1\": \"<string>\",\r\n \"variation_value_2\": \"<string>\",\r\n \"variation_value_3\": \"<string>\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"\r\n\r\n{\r\n \"image\": \"<string>\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"publish\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"variations.items.image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image.items.image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-BUSINESS-API-KEY", "<x-business-api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.hit-pay.com/v1/products")
.header("X-BUSINESS-API-KEY", "<x-business-api-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nProduct Beanie\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"price\"\r\n\r\n15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n<p>Stylish hat suitable for the winter.</p>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"barcode\"\r\n\r\n1234567890123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"headline\"\r\n\r\nStylish hat suitable for the winter.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"stock_keeping_unit\"\r\n\r\nSKU123456\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity_alert_level\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"currency\"\r\n\r\nsgd\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"category_ids\"\r\n\r\n9a12fab0-d282-4437-9460-c3d26662d11a\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"location_ids\"\r\n\r\n9a12fab4-d112-48af-9d6b-050d650b0a25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"locations\"\r\n\r\n{\r\n \"id\": \"9a12fab4-d112-48af-9d6b-050d650b0a25\",\r\n \"manage_inventory\": \"1\",\r\n \"quantity\": 1,\r\n \"quantity_alert_level\": 1\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"open_amount\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_manageable\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_pinned\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"product_weight\"\r\n\r\n250\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"delivery_method_required\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"variations\"\r\n\r\n{\r\n \"price\": 123,\r\n \"quantity\": 123,\r\n \"quantity_alert_level\": 123,\r\n \"image\": \"<string>\",\r\n \"product_variation_weight\": 123,\r\n \"variation_value_1\": \"<string>\",\r\n \"variation_value_2\": \"<string>\",\r\n \"variation_value_3\": \"<string>\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"\r\n\r\n{\r\n \"image\": \"<string>\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"publish\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"variations.items.image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image.items.image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hit-pay.com/v1/products")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-BUSINESS-API-KEY"] = '<x-business-api-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"name\"\r\n\r\nProduct Beanie\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"price\"\r\n\r\n15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"description\"\r\n\r\n<p>Stylish hat suitable for the winter.</p>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"barcode\"\r\n\r\n1234567890123\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"headline\"\r\n\r\nStylish hat suitable for the winter.\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"stock_keeping_unit\"\r\n\r\nSKU123456\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"quantity_alert_level\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"currency\"\r\n\r\nsgd\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"category_ids\"\r\n\r\n9a12fab0-d282-4437-9460-c3d26662d11a\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"location_ids\"\r\n\r\n9a12fab4-d112-48af-9d6b-050d650b0a25\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"locations\"\r\n\r\n{\r\n \"id\": \"9a12fab4-d112-48af-9d6b-050d650b0a25\",\r\n \"manage_inventory\": \"1\",\r\n \"quantity\": 1,\r\n \"quantity_alert_level\": 1\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"open_amount\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_manageable\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"is_pinned\"\r\n\r\n0\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"product_weight\"\r\n\r\n250\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"delivery_method_required\"\r\n\r\ntrue\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"variations\"\r\n\r\n{\r\n \"price\": 123,\r\n \"quantity\": 123,\r\n \"quantity_alert_level\": 123,\r\n \"image\": \"<string>\",\r\n \"product_variation_weight\": 123,\r\n \"variation_value_1\": \"<string>\",\r\n \"variation_value_2\": \"<string>\",\r\n \"variation_value_3\": \"<string>\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image\"\r\n\r\n{\r\n \"image\": \"<string>\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"publish\"\r\n\r\n1\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"variations.items.image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"image.items.image\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"id": "9a12fab4-d112-48af-9d6b-050d650b0a25",
"business_id": "9130c422-bf97-4bd1-b370-07a3a6f40708",
"category_id": [
"9a12fab0-d282-4437-9460-c3d26662d11a"
],
"name": "Beanie",
"headline": null,
"description": "<p>Stylish hat suitable for the winter.</p>",
"currency": "SGD",
"price": 15,
"price_display": "SGD 15.00",
"price_stored": 1500,
"tax_id": null,
"is_manageable": 1,
"is_pinned": false,
"status": "published",
"product_weight": 250,
"delivery_method_required": true,
"has_variations": true,
"is_shopify": false,
"product_url": "<string>",
"variations_count": 2,
"variations": [
{
"id": "9a12fab4-d998-44ea-ad11-8753be88a1c9",
"stock_keeping_unit": null,
"description": "Medium",
"weight": null,
"length": null,
"width": null,
"depth": null,
"price": 18,
"price_display": "SGD 18.00",
"price_stored": 1800,
"quantity": 150,
"quantity_alert_level": 10,
"product_variation_weight": 250,
"variation_value_1": "Medium",
"variation_value_2": null,
"variation_value_3": null
},
{
"id": "9a12fab4-dd20-4f8f-9e74-de28629f863a",
"stock_keeping_unit": null,
"description": "Large",
"weight": null,
"length": null,
"width": null,
"depth": null,
"price": 20,
"price_display": "SGD 20.00",
"price_stored": 2000,
"quantity": 148,
"quantity_alert_level": 10,
"product_variation_weight": 255,
"variation_value_1": "Large",
"variation_value_2": null,
"variation_value_3": null
}
],
"variation_key_1": "Size",
"variation_key_2": null,
"variation_key_3": null,
"images": [
{
"id": "9a12fab6-1e76-448e-8c45-e84e2e38f294",
"caption": "Beanie",
"url": "<string>",
"other_dimensions": [
{
"size": "icon",
"path": "<string>"
},
{
"size": "large",
"path": "<string>"
},
{
"size": "small",
"path": "<string>"
},
{
"size": "medium",
"path": "<string>"
},
{
"size": "thumbnail",
"path": "<string>"
}
]
}
],
"is_published": true,
"created_at": "2023-09-07T13:04:22+08:00",
"updated_at": "2023-09-18T14:36:54+08:00",
"starts_at": null,
"ends_at": null
}"{\"message\":\"The given data was invalid.\",\"errors\":{\"name\":[\"The name field is required.\"]}}"Headers
"b286daabf9921b5a01a4621f026c111e046f8911feba212996c92159b98427d"
Body
The name of the product
"Product Beanie"
The price of the product
15
The description of the product
"<p>Stylish hat suitable for the winter.</p>"
The barcode of the product
255"1234567890123"
The headline of the product
"Stylish hat suitable for the winter."
The stock keeping unit of the product
255"SKU123456"
The quantity of the product
x >= 01
The quantity alert level of the product. It is required when quantity alert level is present.
x >= 01
The currency of the product
"sgd"
The list of business product category ids of the product
The category ids of the product
["9a12fab0-d282-4437-9460-c3d26662d11a"]
The channels of the product
online_store, pos, invoice The location ids of the product
Show child attributes
Show child attributes
The open amount of the product
1, 0 The is manageable of the product
1, 0 The is pinned of the product
1, 0 Weight in gram
250
Show child attributes
Show child attributes
Show child attributes
Show child attributes
1, 0 Response
201
Show child attributes
Show child attributes
Weight in gram
Show child attributes
Show child attributes
Was this page helpful?