Skip to main content

Product Catalog API

Summary

  1. Overview

  2. API Specification
    2.1 Authentication
    2.2 Pagination
    2.3 Product Properties
    2.4 Product Option Properties
    2.5 Base URL of the endpoints
    2.6 Required Endpoints

  3. Examples
    3.1 Retrieve all products
    3.2 Search for products
    3.3 Retrieve product options
    3.4 Mark a product as customizable
    3.5 Mark a product as no longer customizable

1. Overview

The Product Catalog API is an interface that must be implemented on the system on which you want to integrate Zakeke, to allow Zakeke to obtain the list of products present on that system and to transform a product into a customizable product.

You can implement this API using any technology stack. You can read here a basic implementation of it in php.

2. API Specification

The purpose of the Product Catalog API is to allow the Zakeke back office to show you the list of products available on your store to let you choose which of these to make customizable/configurable. To do this, Zakeke must be able to ask the store for the list of available products and must be able to indicate whether a product is enabled for customization/configuration or not.

Each product in your system can contain one or multiple variants (some ecommerce platforms would call these options) that the customer can purchase (imagine multiple sizes or colors of the same t-shirt). To enable the customization of individual variants (options), Zakeke must be able to retrieve the information relating to them via API call.

2.1 Authentication

We require that every API call from Zakeke to the store be authenticated and authorized. Each request is authenticated by HTTP Basic Authentication by using using your Zakeke api client id as username and your secret key as password. You can find your api keys from this page.

2.2 Pagination

API calls that return a list of resources must support result pagination by a parameter named page in the query string. The first page must have index 1. The API must return an empty list when the requested page doesn't have any elements.

2.3 Product Properties

For each product, Zakeke requires the following properties:

PropertyDescription
codeA unique numeric identifier for the product. Each id is unique across your system.
nameThe name of the product.
thumbnailThe URL of an image associated with the product.

Below is an example of JSON representing an ecommerce product as requested by Zakeke.

{
"code": "242422342",
"name": "Woman handbag",
"thumbnail": "https://urlOfTheproduct"
}

2.4 Product Option Properties

For each product option, Zakeke requires the following properties:

PropertyDescription
codeThe unique numeric identifier for the product option.
nameThe name of the product option.
valuesThe list of possible values ​​of the product option.

For each of the possible option value, Zakeke requires the following properties:

PropertyDescription
codeThe unique numeric identifier for the option value.
nameThe name of the option value.

Below is an example JSON of product option with the list of its possible values.

{
"code": "34523",
"name": "Color",
"values": [
{
"code": "537564567",
"name": "White"
},
{
"code": "646456464",
"name": "Black"
},
{
"code": "234633210",
"name": "Red"
}
]
}

2.5 Base URL of the endpoints

All required endpoints must have the same base URL, which you can specify in the Zakeke back office by accessing the "E-commerce Connection" item in the "Your Account" section.

a.ecommerce-baseurl-setup

a.ecommerce-baseurl-setup

In the following documentation, we will assume that the base URL for your system's Product Catalog APIs is as follows:

https://yourSystem/yourProductsAPI/

2.6 Required Endpoints

The following table lists all the endpoints to be implemented on your system that are required for the Product Catalog API, distinguishing the use cases for the Visual Product Customizer and the 3D Product Configurator.

Both Visual Product Customizer and 3D Product Configurator:

VerbEndpointDescription
GEThttps://yourSystem/yourProductsAPIRetrieves a list of products.

Attributes
page Return a specific page of results (default: 1).

search Filter results by product name or code.
GEThttps://yourSystem/yourProductsAPI/{product_code}/optionsRetrieves the list of options for the product with the code {product_code}.

Visual Product Customizer:

VerbEndpointDescription
POSThttps://yourSystem/yourProductsAPI/{product_code}/customizerMarks the product as customizable in your System.
DELETEhttps://yourSystem/yourProductsAPI/{product_code}/customizerMarks the product as not longer customizable in your system

3D Product Configurator:

VerbEndpointDescription
POSThttps://yourSystem/yourProductsAPI/{product_code}/configuratorMarks the product as configurable in your System.
DELETEhttps://yourSystem/yourProductsAPI/{product_code}/configuratorMarks the product as not longer configurable in your system

3 Examples

3.1 Retrieve all products

The following API calls retrieve all the products and obtain the second page of the result set.

Request

GET https://yourSystem/yourProductsAPI?page=2

Response

HTTP/1.1 200 OK

[
{
"code":"1343242",
"name":"Woman handbag",
"thumbnail":"https://imageUrl/woman_handbag.png"
},
{
"code":"1343243",
"name":"Watch",
"thumbnail":"https://imageUrl/watch.png"
}
]

3.2 Search for products

The following API calls retrieve all the products having the word "shirt" in the name and obtain the first page of the result set.

Request

GET https://yourSystem/yourProductsAPI?page=1&search=shirt

Response

HTTP/1.1 200 OK

[
{
"code":"fu1234sh",
"name":"Long sleeve t-shirt",
"thumbnail":"https://imageUrl/long-sleeve-tshirt.png"
},
{
"code":"c14002af",
"name":"Crew neck t-shirt",
"thumbnail":"https://imageUrl/crew-neck-tshirt.png"
},
{
"code":"c14002af",
"name":"V-neck t-shirt",
"thumbnail":"https://imageUrl/v-neck-tshirt.png"
}
]

3.3 Retrieve product options

The following API calls retrieve the options of the product having code "1343242".

Request

GET https://yourSystem/yourProductsAPI/1343242/options

Response

HTTP/1.1 200 OK

[
{
"code":"34523",
"name":"Color",
"values": [
{
"code": "537564567",
"name": "White"
},
{
"code": "646456464",
"name": "Black"
}
]
}
]

3.4 Mark a product as customizable

The following API call mark the product with code "1343242" as configurable with Zakeke.

Request

POST https://yourSystem/yourProductsAPI/1343242/customizer

Response

HTTP/1.1 200 OK

3.5 Mark a product as no longer customizable

The following API call mark the product with code "1343242" as configurable with Zakeke.

Request

DELETE https://yourSystem/yourProductsAPI/1343242/customizer

Response

HTTP/1.1 200 OK