Findify

Findify Developer Hub

Welcome to the Findify developer hub. You'll find comprehensive guides and documentation to help you start working with Findify as quickly as possible, as well as support if you get stuck. Let's jump right in!

Suggest Edits

Introduction

 

Findify provides a set of low- and high-level tools that can help you integrate on any platform using your favorite tools.

For the low-level integration we provide a set of HTTP JSON routes that give you access to all features and tools that we offer.

On a high-level we provide a set of SDK and JS libraries that can ease the integration.

We recommend using high-level tools

We recommend using SDKs and especially JS Feedback library and use low-level API only for building new SDKs

All routes support both HTTP GET and HTTP POST verbs.

For POST requests, the request body must be JSON, with the Content-Type header set to application/json.

The GET requests can be used for JSONP. You can adjust the callback name thanks to the "callback" parameter.

Suggest Edits

Authentication

 

We use API Key authentication mechanism for all routes.

You simply provide a header X-Key with the value of the API key that you have.

curl --request POST \
  --url https://api-v3.findify.io/v3/autocomplete \
  --header "X-Key: 2e963f3e-38bd-4c00-9636-c00e48945eb7" \
  --header "Content-Type: application/json" \
  --data '{"user":{"lang":["en-US","en-GB","no"],"uid":"test1","sid":"ssid","email":"test@test.com","ip":"192.168.0.1","ua":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"},"q":"t","t_client":1484741395471,"suggestion_limit":5,"item_limit":3,"log":false}'

How to get an API key?

To get an API key you need to register with our service and finish the onboarding process (this includes providing a valid feed). If you just want to check out our capabilities, you can use a test API key 2e963f3e-38bd-4c00-9636-c00e48945eb7 that is connected to our demo store: http://findify-demo-store.myshopify.com

Suggest Edits

Required data

 

When using the JSON API directly, or high-level SDKs and JS libraries, there several entities that must be provided.

The user object

It defines the current user, which gives just enough information to enable personalization.

User object has two properties that are required uid and sid

user.uid

string
max length: 32 characters
This is a unique identified of the user across multiple sessions. You can store the uid in the cookie or get it from any other source (like a database). It must uniquly identify the user.

user.sid

string
max length: 32 characters
A unique session identifier, the best is to store the value in a cookie on the client side, with a TTL of 30 minutes or use a session ID that your platform provides.

Other user properties are not required and the API will answer if they are not provided.

Personalization

For the best results, our personalization platform requires user.email, user.ua, user.ip and user.lang properties

user.email

string
The email from the user, if the user is logged in. Providing an email allows us to track the user across devices and give them relevant personalized results.

user.ip

string
By default we get the ip from the request that we receive, but if you are using a direct JSON API integration or for some reason the call is made not from the user's browser, please include the relevant user ip in the request.

user.ua

string
By default we get the user agent from the request that we receive, but if you are using a direct JSON API integration or for some reason the call is made not from the user's browser, please include the relevant user user agent in the request.

user.lang

list of string
By default we get the user languages from the request that we receive, but if you are using a direct JSON API integration or for some reason the call is made not from the user's browser, please include the relevant user user languages in the request. You can use either an ISO 639-1 language format code or include the locale code: en-GB.

t_client

A timestamp from the client side of the user, useful to keep the right ordering of the events that happened

Suggest Edits

Search API

 

Our Search API provides the ability to do autocomplete and full facets search.

Suggest Edits

/autocomplete

Get the predictive results. The answer contains both search suggestions to direct the end user to high-conversion queries, and item matches to help them understand what will be displayed in the complete search results.

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api-v3.findify.io/v3/autocomplete
curl --request POST \
  --url https://api-v3.findify.io/v3/autocomplete \
  --header "X-Key: 2e963f3e-38bd-4c00-9636-c00e48945eb7" \
  --header "Content-Type: application/json" \
  --data '{"user":{"lang":["en-US","en-GB","no"],"uid":"test1","sid":"ssid","email":"test@test.com","ip":"192.168.0.1","ua":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"},"q":"t","t_client":1484741395471,"suggestion_limit":5,"item_limit":3,"log":false}'
//Please, don't forget to include the SDK script
//Which you can find here: https://github.com/findify/javascript-sdk

var client = FindifySDK.init({
    key: '2e963f3e-38bd-4c00-9636-c00e48945eb7',
    user: {
        uid: 'test1',
        sid: 'ssid',
      	email: 'test@test.com'
    },
    log: false
});

var request = {
    q: 't',
    suggestion_limit: 5,
    item_limit: 3
};

client.autocomplete(request).then(function (response) {
  console.log(response);
});
var request = require("request"); 

var options = { 
  method: 'POST',
  url: 'https://api-v3.findify.io/v3/autocomplete',
  headers: {
  	"X-key": "2e963f3e-38bd-4c00-9636-c00e48945eb7"
  },
  body: { 
      user: { 
        lang: [ 'en-US', 'en-GB', 'no' ],
        uid: 'test1',
        sid: 'ssid',
        email: 'test@test.com',
        ip: '192.168.0.1',
        ua: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36' 
      },
      q: 't',
      t_client: 1484741395471,
      suggestion_limit: 5,
      item_limit: 3,
      log: false
  	},
  	json: true 
  };

request(options, function (error, response, body) {
  if (error) throw new Error(error);

  console.log(body);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');

// Configure API key authorization: key
Swagger\Client\Configuration::getDefaultConfiguration()->setApiKey('X-Key', '2e963f3e-38bd-4c00-9636-c00e48945eb7');

$api_instance = new Swagger\Client\Api\DefaultApi();
$autocomplete = new \Swagger\Client\Model\AutocompleteRequest(array(
    'user' => array(
        'uid' => 'test1',
        'sid' => 'ssid',
        'email' => 'test@test.com',
        'ip' => '192.168.0.1',
        'ua' => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36',
        'lang' => array(
            'en-US',
            'en-GB',
            'no'
        )
    ),
    'q' => 't',
    't_client' => '1484741395471',
    'suggestion_limit' => 5,
    'item_limit' => 3,
    'log' => false
));

try {
    $result = $api_instance->autocompletePost($autocomplete);
    echo $result;
}
catch (Exception $e) {
    echo 'Exception when calling DefaultApi->autocompletePost: ', $e->getMessage(), PHP_EOL;
}

?>
A binary file was returned

You couldn't be authenticated

{
  "meta": {
    "q": "t",
    "suggestion_limit": 3,
    "item_limit": 3,
    "rid": "a-edb49c53-eec3-48cc-85ab-d70f77b6e7b2"
  },
  "suggestions": [
    {
      "value": "t"
    },
    {
      "value": "t shirt"
    },
    {
      "value": "t example"
    }
  ],
  "items": [
    {
      "product_url": "http://findify-demo-store.myshopify.com/products/example-t-shirt",
      "price": [
        19.99,
        19.99,
        19.99,
        19.99,
        19.99,
        23,
        25
      ],
      "id": "6411337927",
      "title": "Example T-Shirt",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/shopify_shirt_small.png?v=1462524515",
      "compare_at": -1,
      "stickers": {
        "in-stock": false,
        "out-of-stock": false,
        "discount": false,
        "free-shipping": false
      }
    },
    {
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-canine-vetessentials-mature-adult",
      "price": [
        18.38,
        55.34
      ],
      "id": "6411340743",
      "title": "Hill's Canine Vetessentials Mature Adult",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills_vetessentials_canine_mature_adult_small.jpeg?v=1462524523",
      "compare_at": -1,
      "stickers": {
        "in-stock": false,
        "out-of-stock": false,
        "discount": false,
        "free-shipping": false
      }
    },
    {
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-canine-vetessentials-adult",
      "price": [
        16.75,
        51.4
      ],
      "id": "6411340167",
      "title": "Hill's Canine Vetessentials Adult",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills_vetessentials_canine_adult_small.jpeg?v=1462524521",
      "compare_at": -1,
      "stickers": {
        "in-stock": false,
        "out-of-stock": false,
        "discount": false,
        "free-shipping": false
      }
    }
  ]
}
{
  "error": {
    "message": "You should provide Findify API Key"
  }
}

Body Params

t_client
date-time
required

Timestamp when the request is sent from the browser

user
object
required
 
user.uid
string
required
user.sid
string
required
user.email
string
user.ip
string
user.ua
string
user.lang
array of strings
q
string
required
suggestion_limit
int32
item_limit
int32
callback
string
log
boolean
 
Suggest Edits

Smart Collection API

 

Smart Collection API provides and ability to use our filters on pages other than search results.

Suggest Edits

/smart-collection/{slot}

Get the smart collections results

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api-v3.findify.io/v3/smart-collection/slot
curl --request POST \
  --url https://api-v3.findify.io/v3/smart-collection/test \
  --header "X-Key: 2e963f3e-38bd-4c00-9636-c00e48945eb7" \
  --header "Content-Type: application/json" \
  --data '{"user":{"lang":["en-GB"],"uid":"test1","sid":"ssid","email":"test@test.com","ip":"192.168.0.1","ua":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"},"t_client":1484742065791,"sort":[{"field":"price","order":"desc"}],"offset":0,"limit":20,"log":false}'
//Please, don't forget to include the SDK script
//Which you can find here: https://github.com/findify/javascript-sdk

var client = FindifySDK.init({
    key: '2e963f3e-38bd-4c00-9636-c00e48945eb7',
    user: {
        uid: 'test1',
        sid: 'ssid',
      	email: 'test@test.com'
    },
    log: false
});

var request = {
    slot: 'test',
    sort: [{
        field: 'price',
        order: 'desc'
    }],
    offset: 0,
    limit: 20,
};

client.collection(request).then(function (response) {
  	console.log(response);
});
var request = require("request");
 
var options = {
    method: 'POST',
    url: 'https://api-v3.findify.io/v3/search',
  	headers: {
      "X-key": "2e963f3e-38bd-4c00-9636-c00e48945eb7"
    },
    body: {
        user: {
            lang: ['en-GB'],
            uid: 'test1',
            sid: 'ssid',
            email: 'test@test.com',
            ip: '192.168.0.1',
            ua: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'
        },
        q: '1484742065791',
        t_client: 1484742065791,
        filters: [{
                name: 'category1',
                type: 'category',
                values: [{"value": "Dog Food"}]
            }
        ],
        sort: [{
            field: 'price',
            order: 'desc'
        }],
        offset: 0,
        limit: 20,
        log: false
    },
    json: true
};

request(options, function(error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
})
<?php
require_once(__DIR__ . '/vendor/autoload.php');

// Configure API key authorization: key
Swagger\Client\Configuration::getDefaultConfiguration()->setApiKey('X-Key', '2e963f3e-38bd-4c00-9636-c00e48945eb7');

$api_instance = new Swagger\Client\Api\DefaultApi();
$collection   = new \Swagger\Client\Model\CollectionRequest(array(
    'user' => array(
        'uid' => 'test1',
        'sid' => 'ssid',
        'email' => 'test@test.com',
        'ip' => '192.168.0.1',
        'ua' => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36',
        'lang' => array(
            'en-US',
            'en-GB',
            'no'
        )
    ),
    't_client' => '1484741395471',
    'offset' => 0,
    'limit' => 20,
    'log' => false
));

try {
    $result = $api_instance->smartCollectionSlotPost('test', $collection);
    echo $result;
}
catch (Exception $e) {
    echo 'Exception when calling DefaultApi->smartCollectionSlotPost: ', $e->getMessage(), PHP_EOL;
}

?>
A binary file was returned

You couldn't be authenticated

{
  "meta": {
    "no_result": true,
    "corrected_q": "canine",
    "q": "canin",
    "offset": 0,
    "limit": 20,
    "total": 20,
    "filters": [],
    "sort": [],
    "rid": "s-9fcc881c-1420-4e57-bc58-e234829c363c"
  },
  "facets": [
    {
      "name": "category",
      "type": "category",
      "values": [
        {
          "selected": false,
          "count": 17,
          "has_children": false,
          "value": "Dog Food",
          "name": "category1"
        },
        {
          "selected": false,
          "count": 3,
          "has_children": false,
          "value": "Canned Dog Food",
          "name": "category1"
        }
      ],
      "sort_type": "count"
    },
    {
      "name": "brand",
      "values": [
        {
          "count": 20,
          "has_children": false,
          "name": "brand",
          "value": "Hill's",
          "selected": false
        }
      ],
      "type": "text",
      "sort_type": "count"
    },
    {
      "name": "price",
      "values": [
        {
          "name": "price",
          "count": 7,
          "value": "_20",
          "has_children": false,
          "to": 20,
          "selected": false
        },
        {
          "name": "price",
          "count": 11,
          "value": "20_40",
          "has_children": false,
          "from": 20,
          "to": 40,
          "selected": false
        },
        {
          "name": "price",
          "count": 10,
          "value": "40_50",
          "has_children": false,
          "from": 40,
          "to": 50,
          "selected": false
        },
        {
          "name": "price",
          "count": 13,
          "value": "50_",
          "has_children": false,
          "from": 50,
          "selected": false
        }
      ],
      "type": "range",
      "min": 16.75,
      "max": 81.99,
      "sort_type": "value"
    },
    {
      "name": "tags",
      "values": [
        {
          "count": 20,
          "has_children": false,
          "name": "tags",
          "value": "Dog",
          "selected": false
        },
        {
          "count": 15,
          "has_children": false,
          "name": "tags",
          "value": "Small Breed",
          "selected": false
        },
        {
          "count": 13,
          "has_children": false,
          "name": "tags",
          "value": "Medium Breed",
          "selected": false
        },
        {
          "count": 12,
          "has_children": false,
          "name": "tags",
          "value": "Adult",
          "selected": false
        },
        {
          "count": 12,
          "has_children": false,
          "name": "tags",
          "value": "Giant Breed",
          "selected": false
        },
        {
          "count": 12,
          "has_children": false,
          "name": "tags",
          "value": "Large Breed",
          "selected": false
        },
        {
          "count": 12,
          "has_children": false,
          "name": "tags",
          "value": "Puppy",
          "selected": false
        },
        {
          "count": 2,
          "has_children": false,
          "name": "tags",
          "value": "Old",
          "selected": false
        }
      ],
      "type": "text",
      "sort_type": "count"
    }
  ],
  "items": [
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-canine-vetessentials-adult",
      "color": [],
      "variants_ids": [
        "20493959751",
        "20493959879"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        17
      ],
      "created_at": "2016-05-06T08:48:41.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Canine Vetessentials Adult",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills_vetessentials_canine_adult_small.jpeg?v=1462524521",
      "price": [
        16.75,
        51.4
      ],
      "stickers": {
        "discount": [
          17
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411340167",
      "sku": [
        "53743859309",
        "53743855308"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills_vetessentials_canine_adult_medium.jpeg?v=1462524521",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Dog"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-canine-vetessentials-adult-mini",
      "color": [],
      "variants_ids": [
        "20493960263",
        "20493960327"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        17
      ],
      "created_at": "2016-05-06T08:48:42.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Canine Vetessentials Adult Mini",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills_vetessentials_canine_adult_mini_small.jpeg?v=1462524522",
      "price": [
        16.75,
        45.68
      ],
      "stickers": {
        "discount": [
          17
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411340615",
      "sku": [
        "53743900001",
        "53743900309"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills_vetessentials_canine_adult_mini_medium.jpeg?v=1462524522",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-canine-vetessentials-mature-adult",
      "color": [],
      "variants_ids": [
        "20493960455",
        "20493960583"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        17
      ],
      "created_at": "2016-05-06T08:48:43.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Canine Vetessentials Mature Adult",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills_vetessentials_canine_mature_adult_small.jpeg?v=1462524523",
      "price": [
        18.38,
        55.34
      ],
      "stickers": {
        "discount": [
          17
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411340743",
      "sku": [
        "53743859308",
        "53743855505"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills_vetessentials_canine_mature_adult_medium.jpeg?v=1462524523",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Dog"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-canine-vetessentials-mature-adult-mini",
      "color": [],
      "variants_ids": [
        "20493961031",
        "20493961095"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        17
      ],
      "created_at": "2016-05-06T08:48:44.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Canine Vetessentials Mature Adult Mini",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills_vetessentials_mature_adult_mini_small.jpeg?v=1462524524",
      "price": [
        18.38,
        49.98
      ],
      "stickers": {
        "discount": [
          17
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411341127",
      "sku": [
        "53743900100",
        "53743900308"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills_vetessentials_mature_adult_mini_medium.jpeg?v=1462524524",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Dog",
        "Old",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-a-d-humedo",
      "color": [],
      "variants_ids": [
        "20493973063"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:08.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine a/d húmedo",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_a_d_small.jpeg?v=1462524548",
      "price": [
        58.13
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411349575",
      "sku": [
        "53743557005"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_a_d_medium.jpeg?v=1462524548",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Canned Dog Food"
        }
      ],
      "compare_at": 60.56
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-b-d",
      "color": [],
      "variants_ids": [
        "20493973255"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:09.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine b/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/Hills_Prescription_Diet_Canine_b_d_small.jpeg?v=1462524549",
      "price": [
        42.23
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411349767",
      "sku": [
        "53743954103"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/Hills_Prescription_Diet_Canine_b_d_medium.jpeg?v=1462524549",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Old",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": 43.98
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hill-s-prescription-diet-canine-c-d",
      "color": [],
      "variants_ids": [
        "20493973575",
        "20493973639",
        "20493973703"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        3,
        4
      ],
      "created_at": "2016-05-06T08:49:10.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine c/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_c_d_small.jpeg?v=1462524550",
      "price": [
        18.33,
        38.1,
        72.62
      ],
      "stickers": {
        "discount": [
          4,
          3
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411350087",
      "sku": [
        "53743855409",
        "53743434309",
        "53743917503"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_c_d_medium.jpeg?v=1462524550",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hill-s-prescription-diet-canine-d-d-huevo-y-arroz",
      "color": [],
      "variants_ids": [
        "20493973895",
        "20493973959",
        "20493974023"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:11.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine d/d Huevo y Arroz",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_d_d_egg_rice_small.jpeg?v=1462524551",
      "price": [
        22.97,
        44.91,
        81.99
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411350279",
      "sku": [
        "53743911105",
        "53743911305",
        "53743917703"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_d_d_egg_rice_medium.jpeg?v=1462524551",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hill-s-prescription-diet-canine-d-d-pato-y-arroz",
      "color": [],
      "variants_ids": [
        "20493974407",
        "20493974471",
        "20493974535"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:12.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine d/d Pato y Arroz",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_d_d_pato_arroz_small.jpeg?v=1462524552",
      "price": [
        22.97,
        44.91,
        81.99
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411350599",
      "sku": [
        "53743911700",
        "53743911809",
        "53743917900"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_d_d_pato_arroz_medium.jpeg?v=1462524552",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hill-s-prescription-diet-canine-d-d-salmon-y-arroz",
      "color": [],
      "variants_ids": [
        "20493976135",
        "20493976263",
        "20493976327"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:13.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine d/d Salmón y Arroz",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_d_d_salmon_arroz_small.jpeg?v=1462524553",
      "price": [
        22.97,
        44.91,
        81.99
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411351239",
      "sku": [
        "53743911403",
        "53743911503",
        "53743917801"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_d_d_salmon_arroz_medium.jpeg?v=1462524553",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-h-d",
      "color": [],
      "variants_ids": [
        "20493976519"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:14.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine h/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_h_d_small.jpeg?v=1462524554",
      "price": [
        43.05
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411351495",
      "sku": [
        "53743435701"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_h_d_medium.jpeg?v=1462524554",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": 44.81
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hill-s-prescription-diet-canine-i-d-1",
      "color": [],
      "variants_ids": [
        "20493976775",
        "20493976839",
        "20493976903"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4,
        7
      ],
      "created_at": "2016-05-06T08:49:15.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine i/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_i_d_1_small.jpeg?v=1462524555",
      "price": [
        18.33,
        39.66,
        71.89
      ],
      "stickers": {
        "discount": [
          7,
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411351815",
      "sku": [
        "53743855301",
        "53743431505",
        "53743918105"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_i_d_1_medium.jpeg?v=1462524555",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Dog"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-j-d",
      "color": [],
      "variants_ids": [
        "20493978119",
        "20493978247",
        "20493978311"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4,
        8
      ],
      "created_at": "2016-05-06T08:49:16.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine j/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_j_d_small.jpeg?v=1462524556",
      "price": [
        20.86,
        38.88,
        72.89
      ],
      "stickers": {
        "discount": [
          8,
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411352071",
      "sku": [
        "53743451503",
        "53743453303",
        "53743918303"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_j_d_medium.jpeg?v=1462524556",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-j-d-mini",
      "color": [],
      "variants_ids": [
        "20493978503",
        "20493978567"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:16.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine j/d Mini",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_j_d_mini_small.jpeg?v=1462524556",
      "price": [
        20.86,
        38.88
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411352327",
      "sku": [
        "53743805703",
        "53743805801"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_j_d_mini_medium.jpeg?v=1462524556",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-j-d-reduced-calorie",
      "color": [],
      "variants_ids": [
        "20493978951",
        "20493979015"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:17.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine j/d Reduced Calorie",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_j_d_reduced_calorie_small.jpeg?v=1462524557",
      "price": [
        34.25,
        80.08
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411352711",
      "sku": [
        "53743514007",
        "53743513901"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_j_d_reduced_calorie_medium.jpeg?v=1462524557",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Dog"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-k-d",
      "color": [],
      "variants_ids": [
        "20493979207",
        "20493979271",
        "20493979335"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:18.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine k/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_small.jpeg?v=1462524558",
      "price": [
        18.29,
        39.5,
        74.11
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411352903",
      "sku": [
        "53743855805",
        "53743435401",
        "53743918304"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_medium.jpeg?v=1462524558",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-k-d-humedo",
      "color": [],
      "variants_ids": [
        "20493979463"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:18.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine k/d húmedo",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_lata_small.jpeg?v=1462524558",
      "price": [
        37.97
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411353031",
      "sku": [
        "53743801101"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_lata_medium.jpeg?v=1462524558",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Canned Dog Food"
        }
      ],
      "compare_at": 39.55
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-l-d",
      "color": [],
      "variants_ids": [
        "20493979719",
        "20493979783",
        "20493979911"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:19.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine L/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_small.jpeg?v=1462524559",
      "price": [
        20.86,
        43.05,
        78.85
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411353287",
      "sku": [
        "53743855000",
        "53743733905",
        "53743855901"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_medium.jpeg?v=1462524559",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-l-d-humedo",
      "color": [],
      "variants_ids": [
        "20493980231"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:19.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine l/d húmedo",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_lata_small.jpeg?v=1462524559",
      "price": [
        40.33
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411353671",
      "sku": [
        "53743801100"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_lata_medium.jpeg?v=1462524559",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Canned Dog Food"
        }
      ],
      "compare_at": 42.02
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hill-s-prescription-diet-p-d",
      "color": [],
      "variants_ids": [
        "20493980743",
        "20493980807"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:21.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine p/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills-prescription-diet-canine-p-djpeg_small.jpeg?v=1462524561",
      "price": [
        42.23,
        78.9
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411354119",
      "sku": [
        "53743437003",
        "53743857700"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills-prescription-diet-canine-p-djpeg_medium.jpeg?v=1462524561",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Dog",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    }
  ],
  "banner": {}
}
{
  "error": {
    "message": "You should provide Findify API Key"
  }
}
{
  "meta": {
    "no_result": true,
    "corrected_q": "canine",
    "q": "canin",
    "offset": 0,
    "limit": 20,
    "total": 20,
    "filters": [],
    "sort": [],
    "rid": "s-9fcc881c-1420-4e57-bc58-e234829c363c"
  },
  "facets": [],
  "items": [],
  "redirect": {
  	"name": "/collection-slot",
    "url": "/collection-slot"
  },
  "banner": {}
}

Path Params

slot
string
required

Collection handle

Body Params

t_client
date-time
required
user
object
required
 
user.uid
string
required
user.sid
string
required
user.email
string
user.ip
string
user.ua
string
user.lang
array of strings
sort
array of objects
field
order
filters
array of objects
name
type
values
offset
int32
limit
int32
callback
string
log
boolean
rules
array of objects
action
type
name
values
 

Get the complete smart collection results. This is similar to a search query.

Suggest Edits

Recommendation API

 

Recommendation API provides a set of routes to access different types of recommendations

Suggest Edits

/recommend/{slot}

Get recommendation using pre-configured slot. The slot configuration is available in the Merchant Dashboard. The benefit of using slot is that we calculate CTR and other parameters for each slot and can give you analytics on each recommendation slot.

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api-v3.findify.io/v3/recommend/slot
curl --request POST \
  --url https://api-v3.findify.io/v3/recommend/findify-home-rec-1 \
  --header "X-Key: 2e963f3e-38bd-4c00-9636-c00e48945eb7" \
  --header "Content-Type: application/json" \
  --data '{"user":{"lang":["en-GB"],"uid":"test1","sid":"ssid","email":"test@test.com","ip":"192.168.0.1","ua":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"},"t_client":1484742065791,"offset":0,"log":false}'
//Please, don't forget to include the SDK script
//Which you can find here: https://github.com/findify/javascript-sdk

var client = FindifySDK.init({
    key: '2e963f3e-38bd-4c00-9636-c00e48945eb7',
    user: {
        uid: 'test1',
        sid: 'ssid',
      	email: 'test@test.com'
    },
    log: false
});

var request = {
    slot: 'product-findify-rec-1'
};

client.recommendations('predefined', request).then(function(response) {
    console.log(response);
});
var request = require("request");

var options = {
    method: 'POST',
  	headers: {
      "X-key": "2e963f3e-38bd-4c00-9636-c00e48945eb7"
    },
    url: 'https://api-v3.findify.io/v3/recommend/findify-home-rec-1',
    body: {
        user: {
            lang: ['en-GB'],
            uid: 'test1',
            sid: 'ssid',
            email: 'test@test.com',
            ip: '192.168.0.1',
            ua: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'
        },
        t_client: 1484742065791,
        offset: 0,
        limit: 5,
        log: false
    },
    json: true
};

request(options, function(error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');

// Configure API key authorization: key
Swagger\Client\Configuration::getDefaultConfiguration()->setApiKey('X-Key', '2e963f3e-38bd-4c00-9636-c00e48945eb7');

$api_instance = new Swagger\Client\Api\DefaultApi();
$recommendation = new \Swagger\Client\Model\GenericRecommendationRequest(array(
    'user' => array(
        'uid' => 'test1',
        'sid' => 'ssid',
        'email' => 'test@test.com',
        'ip' => '192.168.0.1',
        'ua' => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36',
        'lang' => array(
            'en-US',
            'en-GB',
            'no'
        )
    ),
    't_client' => '1484741395471',
    'offset' => 0,
    'log' => false
));

try {
    $result = $api_instance->recommendSlotPost('findify-home-rec-1', $recommendation);
    echo $result;
}
catch (Exception $e) {
    echo 'Exception when calling DefaultApi->recommendSlotPost: ', $e->getMessage(), PHP_EOL;
}

?>
A binary file was returned

You couldn't be authenticated

{
  "meta": {
    "limit": 5,
    "offset": 0,
    "user_id": "test1",
    "total": 49,
    "rid": "r-ea052570-c9a6-4ff1-a5b4-538adb8a1050"
  },
  "items": [
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hill-s-prescription-diet-p-d",
      "color": [],
      "variants_ids": [
        "20493980743",
        "20493980807"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:21.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine p/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills-prescription-diet-canine-p-djpeg_small.jpeg?v=1462524561",
      "price": [
        42.23,
        78.9
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411354119",
      "sku": [
        "53743437003",
        "53743857700"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills-prescription-diet-canine-p-djpeg_medium.jpeg?v=1462524561",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Dog",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-l-d",
      "color": [],
      "variants_ids": [
        "20493979719",
        "20493979783",
        "20493979911"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:19.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine L/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_small.jpeg?v=1462524559",
      "price": [
        20.86,
        43.05,
        78.85
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411353287",
      "sku": [
        "53743855000",
        "53743733905",
        "53743855901"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_medium.jpeg?v=1462524559",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-l-d-humedo",
      "color": [],
      "variants_ids": [
        "20493980231"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:19.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine l/d húmedo",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_lata_small.jpeg?v=1462524559",
      "price": [
        40.33
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411353671",
      "sku": [
        "53743801100"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_lata_medium.jpeg?v=1462524559",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Canned Dog Food"
        }
      ],
      "compare_at": 42.02
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-k-d",
      "color": [],
      "variants_ids": [
        "20493979207",
        "20493979271",
        "20493979335"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:18.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine k/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_small.jpeg?v=1462524558",
      "price": [
        18.29,
        39.5,
        74.11
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411352903",
      "sku": [
        "53743855805",
        "53743435401",
        "53743918304"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_medium.jpeg?v=1462524558",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-k-d-humedo",
      "color": [],
      "variants_ids": [
        "20493979463"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:18.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine k/d húmedo",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_lata_small.jpeg?v=1462524558",
      "price": [
        37.97
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411353031",
      "sku": [
        "53743801101"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_lata_medium.jpeg?v=1462524558",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Canned Dog Food"
        }
      ],
      "compare_at": 39.55
    }
  ]
}
{
  "error": {
    "message": "You should provide Findify API Key"
  }
}

Path Params

slot
string
required

Recommendation slot

Body Params

t_client
date-time
required
user
object
required
 
user.uid
string
required
user.sid
string
required
user.email
string
user.ip
string
user.ua
string
user.lang
array of strings
item_id
string
item_ids
array of strings
offset
int32
callback
string
log
boolean
 

Get the list of items for the specific recommendation slot

Suggest Edits

/recommend/items/newest

Provides latest products in your store

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api-v3.findify.io/v3/recommend/items/newest
curl --request POST \
  --url https://api-v3.findify.io/v3/recommend/items/newest \
  --header "X-Key: 2e963f3e-38bd-4c00-9636-c00e48945eb7" \
  --header "Content-Type: application/json" \
  --data '{"user":{"lang":["en-GB"],"uid":"test1","sid":"ssid","email":"test@test.com","ip":"192.168.0.1","ua":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"},"t_client":1484742065791,"offset":0,"limit":5,"log":false}'
//Please, don't forget to include the SDK script
//Which you can find here: https://github.com/findify/javascript-sdk

var client = FindifySDK.init({
    key: '2e963f3e-38bd-4c00-9636-c00e48945eb7',
    user: {
        uid: 'test1',
        sid: 'ssid',
      	email: 'test@test.com'
    },
    log: false
});

var request = {
    offset: 0,
    limit: 5
};

client.recommendations('newest', request).then(function (response) {
  console.log(response);
});
var request = require("request"); 

var options = {
    method: 'POST',
    headers: {
      "X-key": "2e963f3e-38bd-4c00-9636-c00e48945eb7"
    },
    url: 'https://api-v3.findify.io/v3/recommend/items/newest',
    body: {
        user: {
            lang: ['en-GB'],
            uid: 'test1',
            sid: 'ssid',
            email: 'test@test.com',
            ip: '192.168.0.1',
            ua: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'
        },
        t_client: 1484742065791,
        offset: 0,
        limit: 5,
        log: false
    },
    json: true
};

request(options, function(error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');

// Configure API key authorization: key
Swagger\Client\Configuration::getDefaultConfiguration()->setApiKey('X-Key', '2e963f3e-38bd-4c00-9636-c00e48945eb7');

$api_instance = new Swagger\Client\Api\DefaultApi();
$recommendation = new \Swagger\Client\Model\GenericRecommendationRequest(array(
    'user' => array(
        'uid' => 'test1',
        'sid' => 'ssid',
        'email' => 'test@test.com',
        'ip' => '192.168.0.1',
        'ua' => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36',
        'lang' => array(
            'en-US',
            'en-GB',
            'no'
        )
    ),
    't_client' => '1484741395471',
    'offset' => 0,
    'limit' => 5,
    'log' => false
));

try {
    $result = $api_instance->recommendItemsNewestPost($recommendation);
    echo $result;
}
catch (Exception $e) {
    echo 'Exception when calling DefaultApi->recommendItemsNewestPost: ', $e->getMessage(), PHP_EOL;
}

?>
A binary file was returned

You couldn't be authenticated

{
  "meta": {
    "limit": 5,
    "offset": 0,
    "user_id": "test1",
    "total": 49,
    "rid": "r-ea052570-c9a6-4ff1-a5b4-538adb8a1050"
  },
  "items": [
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hill-s-prescription-diet-p-d",
      "color": [],
      "variants_ids": [
        "20493980743",
        "20493980807"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:21.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine p/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills-prescription-diet-canine-p-djpeg_small.jpeg?v=1462524561",
      "price": [
        42.23,
        78.9
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411354119",
      "sku": [
        "53743437003",
        "53743857700"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills-prescription-diet-canine-p-djpeg_medium.jpeg?v=1462524561",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Dog",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-l-d",
      "color": [],
      "variants_ids": [
        "20493979719",
        "20493979783",
        "20493979911"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:19.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine L/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_small.jpeg?v=1462524559",
      "price": [
        20.86,
        43.05,
        78.85
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411353287",
      "sku": [
        "53743855000",
        "53743733905",
        "53743855901"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_medium.jpeg?v=1462524559",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-l-d-humedo",
      "color": [],
      "variants_ids": [
        "20493980231"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:19.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine l/d húmedo",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_lata_small.jpeg?v=1462524559",
      "price": [
        40.33
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411353671",
      "sku": [
        "53743801100"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_lata_medium.jpeg?v=1462524559",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Canned Dog Food"
        }
      ],
      "compare_at": 42.02
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-k-d",
      "color": [],
      "variants_ids": [
        "20493979207",
        "20493979271",
        "20493979335"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:18.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine k/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_small.jpeg?v=1462524558",
      "price": [
        18.29,
        39.5,
        74.11
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411352903",
      "sku": [
        "53743855805",
        "53743435401",
        "53743918304"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_medium.jpeg?v=1462524558",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-k-d-humedo",
      "color": [],
      "variants_ids": [
        "20493979463"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:18.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine k/d húmedo",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_lata_small.jpeg?v=1462524558",
      "price": [
        37.97
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411353031",
      "sku": [
        "53743801101"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_lata_medium.jpeg?v=1462524558",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Canned Dog Food"
        }
      ],
      "compare_at": 39.55
    }
  ]
}
{
  "error": {
    "message": "You should provide Findify API Key"
  }
}

Body Params

t_client
date-time
required
user
object
required
 
user.uid
string
required
user.sid
string
required
user.email
string
user.ip
string
user.ua
string
user.lang
array of strings
offset
int32
limit
string
callback
string
log
boolean
 

This is a low level API, we recommend you to use the simple recommendation route to enable easy configuration via the Findify Merchant Dashboard.

Get the list of the newest items

Suggest Edits

/recommend/items/viewed/latest

Provides products recently viewed by the current user

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api-v3.findify.io/v3/recommend/items/viewed/latest
curl --request POST \
  --url https://api-v3.findify.io/v3/recommend/items/viewed/latest \
  --header "X-Key: 2e963f3e-38bd-4c00-9636-c00e48945eb7" \
  --header "Content-Type: application/json" \
  --data '{"user":{"lang":["en-GB"],"uid":"test1","sid":"ssid","email":"test@test.com","ip":"192.168.0.1","ua":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"},"t_client":1484742065791,"offset":0,"limit":5,"log":false}'
//Please, don't forget to include the SDK script
//Which you can find here: https://github.com/findify/javascript-sdk

var client = FindifySDK.init({
    key: '2e963f3e-38bd-4c00-9636-c00e48945eb7',
    user: {
        uid: 'test1',
        sid: 'ssid',
      	email: 'test@test.com'
    },
    log: false
});

var request = {
    offset: 0,
    limit: 5
};

client.recommendations('latest', request).then(function (response) {
  console.log(response);
});
var request = require("request");
 
var options = {
    method: 'POST',
    headers: {
      "X-key": "2e963f3e-38bd-4c00-9636-c00e48945eb7"
    },
    url: 'https://api-v3.findify.io/v3/recommend/items/viewed/latest',
    body: {
        user: {
            lang: ['en-GB'],
            uid: 'test1',
            sid: 'ssid',
            email: 'test@test.com',
            ip: '192.168.0.1',
            ua: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'
        },
        t_client: 1484742065791,
        offset: 0,
        limit: 5,
        log: false
    },
    json: true
};

request(options, function(error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');

// Configure API key authorization: key
Swagger\Client\Configuration::getDefaultConfiguration()->setApiKey('X-Key', '2e963f3e-38bd-4c00-9636-c00e48945eb7');

$api_instance = new Swagger\Client\Api\DefaultApi();
$recommendation = new \Swagger\Client\Model\GenericRecommendationRequest(array(
    'user' => array(
        'uid' => 'test1',
        'sid' => 'ssid',
        'email' => 'test@test.com',
        'ip' => '192.168.0.1',
        'ua' => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36',
        'lang' => array(
            'en-US',
            'en-GB',
            'no'
        )
    ),
    't_client' => '1484741395471',
    'offset' => 0,
    'limit' => 5,
    'log' => false
));

try {
    $result = $api_instance->recommendItemsViewedLatestPost($recommendation);
    echo $result;
}
catch (Exception $e) {
    echo 'Exception when calling DefaultApi->recommendItemsViewedLatestPost: ', $e->getMessage(), PHP_EOL;
}

?>
A binary file was returned

You couldn't be authenticated

{
  "meta": {
    "limit": 5,
    "offset": 0,
    "user_id": "test1",
    "total": 49,
    "rid": "r-ea052570-c9a6-4ff1-a5b4-538adb8a1050"
  },
  "items": [
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hill-s-prescription-diet-p-d",
      "color": [],
      "variants_ids": [
        "20493980743",
        "20493980807"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:21.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine p/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills-prescription-diet-canine-p-djpeg_small.jpeg?v=1462524561",
      "price": [
        42.23,
        78.9
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411354119",
      "sku": [
        "53743437003",
        "53743857700"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills-prescription-diet-canine-p-djpeg_medium.jpeg?v=1462524561",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Dog",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-l-d",
      "color": [],
      "variants_ids": [
        "20493979719",
        "20493979783",
        "20493979911"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:19.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine L/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_small.jpeg?v=1462524559",
      "price": [
        20.86,
        43.05,
        78.85
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411353287",
      "sku": [
        "53743855000",
        "53743733905",
        "53743855901"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_medium.jpeg?v=1462524559",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-l-d-humedo",
      "color": [],
      "variants_ids": [
        "20493980231"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:19.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine l/d húmedo",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_lata_small.jpeg?v=1462524559",
      "price": [
        40.33
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411353671",
      "sku": [
        "53743801100"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_lata_medium.jpeg?v=1462524559",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Canned Dog Food"
        }
      ],
      "compare_at": 42.02
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-k-d",
      "color": [],
      "variants_ids": [
        "20493979207",
        "20493979271",
        "20493979335"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:18.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine k/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_small.jpeg?v=1462524558",
      "price": [
        18.29,
        39.5,
        74.11
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411352903",
      "sku": [
        "53743855805",
        "53743435401",
        "53743918304"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_medium.jpeg?v=1462524558",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-k-d-humedo",
      "color": [],
      "variants_ids": [
        "20493979463"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:18.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine k/d húmedo",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_lata_small.jpeg?v=1462524558",
      "price": [
        37.97
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411353031",
      "sku": [
        "53743801101"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_lata_medium.jpeg?v=1462524558",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Canned Dog Food"
        }
      ],
      "compare_at": 39.55
    }
  ]
}
{
  "error": {
    "message": "You should provide Findify API Key"
  }
}

Body Params

t_client
date-time
required
user
object
required
 
user.uid
string
required
user.sid
string
required
user.email
string
user.ip
string
user.ua
string
user.lang
array of strings
offset
int32
limit
int32
callback
string
log
boolean
 

This is a low level API, we recommend you to use the simple recommendation route to enable easy configuration via the Findify Merchant Dashboard.

Get the list of the latest items viewed by the user

Suggest Edits

/recommend/items/{item_id}/viewed/viewed

Provides 'users who viewed this product, also viewed these products' recommendation

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api-v3.findify.io/v3/recommend/items/item_id/viewed/viewed
curl --request POST \
  --url https://api-v3.findify.io/v3/recommend/items/6411354119/viewed/viewed \
  --header "X-Key: 2e963f3e-38bd-4c00-9636-c00e48945eb7" \
  --header "Content-Type: application/json" \
  --data '{"user":{"lang":["en-GB"],"uid":"test1","sid":"ssid","email":"test@test.com","ip":"192.168.0.1","ua":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"},"t_client":1484742065791,"offset":0,"limit":5,"log":false}'
//Please, don't forget to include the SDK script
//Which you can find here: https://github.com/findify/javascript-sdk

var client = FindifySDK.init({
    key: '2e963f3e-38bd-4c00-9636-c00e48945eb7',
    user: {
        uid: 'test1',
        sid: 'ssid',
      	email: 'test@test.com'
    },
    log: false
});

var request = {
    offset: 0,
    limit: 5,
    item_id: '6411354119'
};

client.recommendations('viewed', request).then(function (response) {
  console.log(response);
});
var request = require("request");

var options = {
    method: 'POST',
    headers: {
      "X-key": "2e963f3e-38bd-4c00-9636-c00e48945eb7"
    },
    url: 'https://api-v3.findify.io/v3/recommend/items/6411354119/viewed/viewed',
    body: {
        user: {
            lang: ['en-GB'],
            uid: 'test1',
            sid: 'ssid',
            email: 'test@test.com',
            ip: '192.168.0.1',
            ua: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'
        },
        t_client: 1484742065791,
        offset: 0,
        limit: 5,
        log: false
    },
    json: true
};

request(options, function(error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');

// Configure API key authorization: key
Swagger\Client\Configuration::getDefaultConfiguration()->setApiKey('X-Key', '2e963f3e-38bd-4c00-9636-c00e48945eb7');

$api_instance = new Swagger\Client\Api\DefaultApi();
$recommendation = new \Swagger\Client\Model\RecommendationRequest(array(
    'user' => array(
        'uid' => 'test1',
        'sid' => 'ssid',
        'email' => 'test@test.com',
        'ip' => '192.168.0.1',
        'ua' => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36',
        'lang' => array(
            'en-US',
            'en-GB',
            'no'
        )
    ),
    't_client' => '1484741395471',
    'offset' => 0,
    'limit' => 5,
    'log' => false
));

try {
    $result = $api_instance->recommendItemsItemIdViewedViewedPost('6411354119', $recommendation);
    echo $result;
}
catch (Exception $e) {
    echo 'Exception when calling DefaultApi->recommendItemsItemIdViewedViewedPost: ', $e->getMessage(), PHP_EOL;
}

?>
A binary file was returned

You couldn't be authenticated

{
  "meta": {
    "limit": 5,
    "offset": 0,
    "user_id": "test1",
    "total": 49,
    "rid": "r-ea052570-c9a6-4ff1-a5b4-538adb8a1050"
  },
  "items": [
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hill-s-prescription-diet-p-d",
      "color": [],
      "variants_ids": [
        "20493980743",
        "20493980807"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:21.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine p/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills-prescription-diet-canine-p-djpeg_small.jpeg?v=1462524561",
      "price": [
        42.23,
        78.9
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411354119",
      "sku": [
        "53743437003",
        "53743857700"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills-prescription-diet-canine-p-djpeg_medium.jpeg?v=1462524561",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Dog",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-l-d",
      "color": [],
      "variants_ids": [
        "20493979719",
        "20493979783",
        "20493979911"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:19.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine L/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_small.jpeg?v=1462524559",
      "price": [
        20.86,
        43.05,
        78.85
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411353287",
      "sku": [
        "53743855000",
        "53743733905",
        "53743855901"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_medium.jpeg?v=1462524559",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-l-d-humedo",
      "color": [],
      "variants_ids": [
        "20493980231"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:19.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine l/d húmedo",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_lata_small.jpeg?v=1462524559",
      "price": [
        40.33
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411353671",
      "sku": [
        "53743801100"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_lata_medium.jpeg?v=1462524559",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Canned Dog Food"
        }
      ],
      "compare_at": 42.02
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-k-d",
      "color": [],
      "variants_ids": [
        "20493979207",
        "20493979271",
        "20493979335"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:18.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine k/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_small.jpeg?v=1462524558",
      "price": [
        18.29,
        39.5,
        74.11
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411352903",
      "sku": [
        "53743855805",
        "53743435401",
        "53743918304"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_medium.jpeg?v=1462524558",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-k-d-humedo",
      "color": [],
      "variants_ids": [
        "20493979463"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:18.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine k/d húmedo",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_lata_small.jpeg?v=1462524558",
      "price": [
        37.97
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411353031",
      "sku": [
        "53743801101"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_lata_medium.jpeg?v=1462524558",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Canned Dog Food"
        }
      ],
      "compare_at": 39.55
    }
  ]
}
{
  "error": {
    "message": "You should provide Findify API Key"
  }
}

Path Params

item_id
string
required

Body Params

t_client
date-time
required
user
object
required
 
user.uid
string
required
user.sid
string
required
user.email
string
user.ip
string
user.ua
string
user.lang
array of strings
offset
int32
limit
int32
callback
string
log
boolean
 

This is a low level API, we recommend you to use the simple recommendation route to enable easy configuration via the Findify Merchant Dashboard.

Get the list of the items related to the current item

Suggest Edits

/recommend/items/{item_id}/viewed/bought

Provides 'users who viewed this product, also bought these products' recommendation

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api-v3.findify.io/v3/recommend/items/item_id/viewed/bought
curl --request POST \
  --url https://api-v3.findify.io/v3/recommend/items/6411354119/viewed/bought \
  --header "X-Key: 2e963f3e-38bd-4c00-9636-c00e48945eb7" \
  --header "Content-Type: application/json" \
  --data '{"user":{"lang":["en-GB"],"uid":"test1","sid":"ssid","email":"test@test.com","ip":"192.168.0.1","ua":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"},"t_client":1484742065791,"offset":0,"limit":5,"log":false}'
//Please, don't forget to include the SDK script
//Which you can find here: https://github.com/findify/javascript-sdk

var client = FindifySDK.init({
    key: '2e963f3e-38bd-4c00-9636-c00e48945eb7',
    user: {
        uid: 'test1',
        sid: 'ssid',
      	email: 'test@test.com'
    },
    log: false
});

var request = {
    offset: 0,
    limit: 5,
    item_id: '6411354119'
};

client.recommendations('bought', request).then(function (response) {
  console.log(response);
});
var request = require("request");

var options = {
    method: 'POST',
    headers: {
      "X-key": "2e963f3e-38bd-4c00-9636-c00e48945eb7"
    },
    url: 'https://api-v3.findify.io/v3/recommend/items/6411354119/viewed/bought',
    body: {
        user: {
            lang: ['en-GB'],
            uid: 'test1',
            sid: 'ssid',
            email: 'test@test.com',
            ip: '192.168.0.1',
            ua: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'
        },
        t_client: 1484742065791,
        offset: 0,
        limit: 5,
        log: false
    },
    json: true
};

request(options, function(error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');

// Configure API key authorization: key
Swagger\Client\Configuration::getDefaultConfiguration()->setApiKey('X-Key', '2e963f3e-38bd-4c00-9636-c00e48945eb7');

$api_instance = new Swagger\Client\Api\DefaultApi();
$recommendation = new \Swagger\Client\Model\RecommendationRequest(array(
    'user' => array(
        'uid' => 'test1',
        'sid' => 'ssid',
        'email' => 'test@test.com',
        'ip' => '192.168.0.1',
        'ua' => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36',
        'lang' => array(
            'en-US',
            'en-GB',
            'no'
        )
    ),
    't_client' => '1484741395471',
    'offset' => 0,
    'limit' => 5,
    'log' => false
));

try {
    $result = $api_instance->recommendItemsItemIdViewedBoughtPost('6411354119', $recommendation);
    echo $result;
}
catch (Exception $e) {
    echo 'Exception when calling DefaultApi->recommendItemsItemIdViewedBoughtPost: ', $e->getMessage(), PHP_EOL;
}

?>
A binary file was returned

You couldn't be authenticated

{
  "meta": {
    "limit": 5,
    "offset": 0,
    "user_id": "test1",
    "total": 49,
    "rid": "r-ea052570-c9a6-4ff1-a5b4-538adb8a1050"
  },
  "items": [
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hill-s-prescription-diet-p-d",
      "color": [],
      "variants_ids": [
        "20493980743",
        "20493980807"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:21.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine p/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills-prescription-diet-canine-p-djpeg_small.jpeg?v=1462524561",
      "price": [
        42.23,
        78.9
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411354119",
      "sku": [
        "53743437003",
        "53743857700"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills-prescription-diet-canine-p-djpeg_medium.jpeg?v=1462524561",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Dog",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-l-d",
      "color": [],
      "variants_ids": [
        "20493979719",
        "20493979783",
        "20493979911"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:19.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine L/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_small.jpeg?v=1462524559",
      "price": [
        20.86,
        43.05,
        78.85
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411353287",
      "sku": [
        "53743855000",
        "53743733905",
        "53743855901"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_medium.jpeg?v=1462524559",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-l-d-humedo",
      "color": [],
      "variants_ids": [
        "20493980231"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:19.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine l/d húmedo",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_lata_small.jpeg?v=1462524559",
      "price": [
        40.33
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411353671",
      "sku": [
        "53743801100"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_lata_medium.jpeg?v=1462524559",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Canned Dog Food"
        }
      ],
      "compare_at": 42.02
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-k-d",
      "color": [],
      "variants_ids": [
        "20493979207",
        "20493979271",
        "20493979335"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:18.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine k/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_small.jpeg?v=1462524558",
      "price": [
        18.29,
        39.5,
        74.11
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411352903",
      "sku": [
        "53743855805",
        "53743435401",
        "53743918304"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_medium.jpeg?v=1462524558",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-k-d-humedo",
      "color": [],
      "variants_ids": [
        "20493979463"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:18.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine k/d húmedo",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_lata_small.jpeg?v=1462524558",
      "price": [
        37.97
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411353031",
      "sku": [
        "53743801101"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_lata_medium.jpeg?v=1462524558",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Canned Dog Food"
        }
      ],
      "compare_at": 39.55
    }
  ]
}
{
  "error": {
    "message": "You should provide Findify API Key"
  }
}

Path Params

item_id
string
required

Body Params

t_client
date-time
required
user
object
required
 
user.uid
string
required
user.sid
string
required
user.email
string
user.ip
string
user.ua
string
user.lang
array of strings
offset
int32
limit
int32
callback
string
log
boolean
 

This is a low level API, we recommend you to use the simple recommendation route to enable easy configuration via the Findify Merchant Dashboard.

Get the list of the items related to the current item

Suggest Edits

/recommend/items/{item_id}/bought/bought

Provides 'frequently purchased together' recommendation

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api-v3.findify.io/v3/recommend/items/item_ids/bought/bought
curl --request POST \
  --url https://api-v3.findify.io/v3/recommend/items/6411354119,10116071626/bought/bought \
  --header "X-Key: 2e963f3e-38bd-4c00-9636-c00e48945eb7" \
  --header "Content-Type: application/json" \
  --data '{"user":{"lang":["en-GB"],"uid":"test1","sid":"ssid","email":"test@test.com","ip":"192.168.0.1","ua":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"},"t_client":1484742065791,"offset":0,"limit":5,"log":false}'
//Please, don't forget to include the SDK script
//Which you can find here: https://github.com/findify/javascript-sdk

var client = FindifySDK.init({
    key: '2e963f3e-38bd-4c00-9636-c00e48945eb7',
    user: {
        uid: 'test1',
        sid: 'ssid',
      	email: 'test@test.com'
    },
    log: false
});

var request = {
    offset: 0,
    limit: 5,
    item_ids: ['6411354119', '10116071626']
};

client.recommendations('frequentlyPurchased', request).then(function (response) {
  console.log(response);
});
var request = require("request");

var options = {
    method: 'POST',
    headers: {
      "X-key": "2e963f3e-38bd-4c00-9636-c00e48945eb7"
    },
    url: 'https://api-v3.findify.io/v3/recommend/items/6411354119,10116071626/bought/bought',
    body: {
        user: {
            lang: ['en-GB'],
            uid: 'test1',
            sid: 'ssid',
            email: 'test@test.com',
            ip: '192.168.0.1',
            ua: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'
        },
        t_client: 1484742065791,
        offset: 0,
        limit: 5,
        log: false
    },
    json: true
};

request(options, function(error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');

// Configure API key authorization: key
Swagger\Client\Configuration::getDefaultConfiguration()->setApiKey('X-Key', '2e963f3e-38bd-4c00-9636-c00e48945eb7');

$api_instance = new Swagger\Client\Api\DefaultApi();
$recommendation = new \Swagger\Client\Model\RecommendationRequest(array(
    'user' => array(
        'uid' => 'test1',
        'sid' => 'ssid',
        'email' => 'test@test.com',
        'ip' => '192.168.0.1',
        'ua' => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36',
        'lang' => array(
            'en-US',
            'en-GB',
            'no'
        )
    ),
    't_client' => '1484741395471',
    'offset' => 0,
    'limit' => 5,
    'log' => false
));

try {
    $result = $api_instance->recommendItemsItemIdBoughtBoughtPost('6411354119,10116071626', $recommendation);
    echo $result;
}
catch (Exception $e) {
    echo 'Exception when calling DefaultApi->recommendItemsItemIdBoughtBoughtPost: ', $e->getMessage(), PHP_EOL;
}

?>
A binary file was returned

You couldn't be authenticated

{
  "meta": {
    "limit": 5,
    "offset": 0,
    "user_id": "test1",
    "item_ids": ["6411354119", "10116071626"],
    "total": 49,
    "rid": "r-ea052570-c9a6-4ff1-a5b4-538adb8a1050"
  },
  "items": [
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hill-s-prescription-diet-p-d",
      "color": [],
      "variants_ids": [
        "20493980743",
        "20493980807"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:21.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine p/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills-prescription-diet-canine-p-djpeg_small.jpeg?v=1462524561",
      "price": [
        42.23,
        78.9
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411354119",
      "sku": [
        "53743437003",
        "53743857700"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/hills-prescription-diet-canine-p-djpeg_medium.jpeg?v=1462524561",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Dog",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-l-d",
      "color": [],
      "variants_ids": [
        "20493979719",
        "20493979783",
        "20493979911"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:19.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine L/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_small.jpeg?v=1462524559",
      "price": [
        20.86,
        43.05,
        78.85
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411353287",
      "sku": [
        "53743855000",
        "53743733905",
        "53743855901"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_medium.jpeg?v=1462524559",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-l-d-humedo",
      "color": [],
      "variants_ids": [
        "20493980231"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:19.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine l/d húmedo",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_lata_small.jpeg?v=1462524559",
      "price": [
        40.33
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411353671",
      "sku": [
        "53743801100"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_l_d_lata_medium.jpeg?v=1462524559",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Canned Dog Food"
        }
      ],
      "compare_at": 42.02
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-k-d",
      "color": [],
      "variants_ids": [
        "20493979207",
        "20493979271",
        "20493979335"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:18.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine k/d",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_small.jpeg?v=1462524558",
      "price": [
        18.29,
        39.5,
        74.11
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411352903",
      "sku": [
        "53743855805",
        "53743435401",
        "53743918304"
      ],
      "brand": "Hill's",
      "quantity": 1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_medium.jpeg?v=1462524558",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Dog Food"
        }
      ],
      "compare_at": -1
    },
    {
      "seller": "",
      "short_description": "",
      "product_url": "http://findify-demo-store.myshopify.com/products/hills-prescription-diet-canine-k-d-humedo",
      "color": [],
      "variants_ids": [
        "20493979463"
      ],
      "image_2_url": "",
      "description": "Pienso para Dogs - Telepienso",
      "discount": [
        4
      ],
      "created_at": "2016-05-06T08:49:18.000Z",
      "availability": true,
      "delivery_time": "",
      "variants": [],
      "title": "Hill's Prescription Diet Canine k/d húmedo",
      "thumbnail_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_lata_small.jpeg?v=1462524558",
      "price": [
        37.97
      ],
      "stickers": {
        "discount": [
          4
        ],
        "availability": true,
        "in-stock": false,
        "out-of-stock": false,
        "free-shipping": false
      },
      "id": "6411353031",
      "sku": [
        "53743801101"
      ],
      "brand": "Hill's",
      "quantity": -1,
      "color_variants": 1,
      "shipping_cost": "",
      "image_url": "https://cdn.shopify.com/s/files/1/1281/0545/products/prescription_diet_canine_k_d_lata_medium.jpeg?v=1462524558",
      "custom_fields": {},
      "rating_score": -1,
      "tags": [
        "Adult",
        "Dog",
        "Giant Breed",
        "Large Breed",
        "Medium Breed",
        "Puppy",
        "Small Breed"
      ],
      "condition": "",
      "product_type": "",
      "material": [],
      "size": [],
      "shipping_weight": "",
      "category": [
        {
          "category2": "",
          "category3": "",
          "category4": "",
          "category1": "Canned Dog Food"
        }
      ],
      "compare_at": 39.55
    }
  ]
}
{
  "error": {
    "message": "You should provide Findify API Key"
  }
}

Path Params

item_ids
string
required

Item IDs separated by comma

Body Params

t_client
date-time
required
user
object
required
 
user.uid
string
required
user.sid
string
required
user.email
string
user.ip
string
user.ua
string
user.lang
array of strings
offset
int32
limit
int32
callback
string
log
boolean
 
Suggest Edits

Feedback API

 

Feedback API provides a way to send information about user activity on the web page to power our ML and personalization algorithms

Suggest Edits

/feedback

 

Header Auth

 Authentication is required for this endpoint.
posthttps://api-v3.findify.io/v3/feedback
curl --request POST \
  --url https://api-v3.findify.io/v3/feedback \
  --header "X-Key: 2e963f3e-38bd-4c00-9636-c00e48945eb7" \
  --header "Content-Type: application/json" \
  --data '{"user":{"lang":["en-GB"],"uid":"test1","sid":"ssid","email":"test@test.com","ip":"192.168.0.1","ua":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36"},"t_client":1484742065791, "log": false,"event":"click-item", "properties": {"rid": "r-ea052570-c9a6-4ff1-a5b4-538adb8a1050", "item_id": "6411354119"}}'
//Please, don't forget to include the SDK script
//Which you can find here: https://github.com/findify/javascript-sdk

var client = FindifySDK.init({
    key: '2e963f3e-38bd-4c00-9636-c00e48945eb7',
    user: {
        uid: 'test1',
        sid: 'ssid',
      	email: 'test@test.com'
    },
    log: false
});

var request = {
    rid: 'r-ea052570-c9a6-4ff1-a5b4-538adb8a1050',
    item_id: '6411354119'
};

client.feedback('click-item', request);
var request = require("request");
 
var options = {
    method: 'POST',
    headers: {
      "X-key": "2e963f3e-38bd-4c00-9636-c00e48945eb7"
    },
    url: 'https://api-v3.findify.io/v3/feedback',
    body: {
        user: {
            lang: ['en-GB'],
            uid: 'test1',
            sid: 'ssid',
            email: 'test@test.com',
            ip: '192.168.0.1',
            ua: 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36'
        },
        t_client: 1484742065791,
        log: 'false',
        event: 'click-item',
        properties: {
            rid: "r-ea052570-c9a6-4ff1-a5b4-538adb8a1050",
            item_id: "6411354119"
        }
    },
    json: true
};

request(options, function(error, response, body) {
    if (error) throw new Error(error);

    console.log(body);
});
<?php
require_once(__DIR__ . '/vendor/autoload.php');

// Configure API key authorization: key
Swagger\Client\Configuration::getDefaultConfiguration()->setApiKey('X-Key', '2e963f3e-38bd-4c00-9636-c00e48945eb7');

$api_instance = new Swagger\Client\Api\DefaultApi();
$feedback     = new \Swagger\Client\Model\Feedback(array(
    'user' => array(
        'uid' => 'test1',
        'sid' => 'ssid',
        'email' => 'test@test.com',
        'ip' => '192.168.0.1',
        'ua' => 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.36',
        'lang' => array(
            'en-US',
            'en-GB',
            'no'
        )
    ),
    't_client' => '1484741395471',
    'event' => 'click-item',
    'properties' => array(
        'rid' => 'r-ea052570-c9a6-4ff1-a5b4-538adb8a1050',
        'item_id' => '6411354119'
    ),
    'log' => false
));

try {
    $result = $api_instance->feedbackPost('findify-home-rec-1', $feedback);
    echo $result;
}
catch (Exception $e) {
    echo 'Exception when calling DefaultApi->feedbackPost: ', $e->getMessage(), PHP_EOL;
}

?>
A binary file was returned

You couldn't be authenticated

{
  "error": {
    "message": "You should provide Findify API Key"
  }
}

Body Params

t_client
date-time
required
user
object
required
 
user.uid
string
required
user.sid
string
required
user.email
string
user.ip
string
user.ua
string
user.lang
array of strings
event
string
required

Event name

properties
mixed type
required

Event properties

callback
string
log
boolean
 

This is a low level API, we recommend you to use the Findify Merchant JS, or the Findify Feedback JS to speed up the integration.

Sends analytics information in order to help the personalization algorithm deliver more relevant items to the user

Generic structure

{
    "event": "EVENT NAME", //REQUIRED, Event name
    "properties": {
        // HERE ARE THE PROPERTIES RELATED TO EACH EVENT
    },
    "api_version": "v3",  // REQUIRED, API Version
    "key": string, //REQUIRED, Merchant API Key
    "t_client": unit_timestamp, //REQUIRED, Timestamp client in milliseconds
    "user": {
        "uid": string,      //REQUIRED, Permanent User ID
        "sid": string,      //REQUIRED, Session ID
        "ip": string,       //REQUIRED, IP of the customer
        "ua": string,       //REQUIRED, User-agent
        "lang": [string],   //OPTIONAL, Languages
        "email": string     //OPTIONAL, User email
    }
}

Click-suggestion event

{
    "event": "click-suggestion",
    "properties": {
        "rid": string,  //REQUIRED, Request id preceding the clickthrough
        "suggestion": string //REQUIRED, Suggestion that is clicked
    }
}

Click-item event

{
    "event": "click-item",
    "properties": {
        "rid": string,      // OPTIONAL, Request id preceding the clickthrough
        "item_id": string   // REQUIRED, Item ID clicked
    }
}

Page redirect event

{
     "event": "redirect",
     "properties": {
        "rid": string,  // REQUIRED, Request id preceding the redirection
        "suggestion": string // REQUIRED, Suggestion that leads to the redirection
     }
}

Purchase event

{
    "event": "purchase",
    "properties": {
        "order_id": string,     // REQUIRED, Order ID
        "currency": string,     // REQUIRED, Currency of the purchase
        "revenue": double,      // REQUIRED, Total revenue
      	"total_discount": double, // OPTIONAL, total order discount
      	"total_tax": double, //OPTIONAL, total tax applied to the order
      	"total_shipping": double, //OPTIONAL, total shipping applied to the order
        "affiliation": string,  // OPTIONAL, Affiliation of the purchase
        "line_items": [
            {
                "item_id": string,      // REQUIRED, Item ID bought
                "unit_price": double,   // REQUIRED, Sale price of the product
                "quantity”: int         // REQUIRED, Quantity bought
            }
        ]
    }
}

Add-to-cart event

{
    "event": "add-to-cart",
    "properties": {
        "rid": string,      // OPTIONAL, Request ID preceding the add-to-cart
        "item_id": string,  // REQUIRED, Item ID added to cart
        "quantity": int     // OPTIONAL, Quantity added to cart, default = 1
    }
}

Cart event

{
    "event": "update-cart",
    "properties": {
        "line_items": [
            {
                "item_id": string,     // REQUIRED, Item ID
                "unit_price": double,  // REQUIRED, Sale price of the product
                "quantity": int        // REQUIRED, Quantity bought
            }
        ]
    }
}

Page view

{
    "event": "view-page",
    "properties": {
        "url": string,      // REQUIRED, URL of the page viewed
        "ref": string,      // REQUIRED, Referer of the page
        "width": int,       // REQUIRED, Width of the customer's browser
        "height": int,      // REQUIRED, Height of the customer's browser
        "item_id": string   // OPTIONAL, Item ID - only for product pages
    }
}
Suggest Edits

Introduction

 

Findify Analytics JS helps you integrate our Feedback API on the website and gather all the user behavior analytics that our ML and personalization require.

This is documentation for Analytics JS >= 3.x.
If you are looking for the old version of Analytics JS (< 3.x) it could be found here:

Suggest Edits

findifyAnalytics(config)

 

Initializes library.

Arguments:

config.key required (string): Merchant API key.

Returns:

Client instance, which could be used further for sending feedback requests to the server.

// First, you need to initialize library:
var client = findifyAnalytics({
    key: 'b9h348b89h439g43'
});

// Then, you should initialize client instance.
// Usually you want to do this on document ready event to collect all data from HTML tags.
client.initialize();

// After library initialized, we can send event requests to server with `client` instance. Let's perform click-suggestion request:
client.sendEvent('click-suggestion', {
  rid: 'request_id',
  suggestion: 'Black t-shirt'
});

// You can get `user` instance, which can be used further in `findify-sdk` library:
var user = client.user;

// To access events on the page you can use `client.state`,
// Analytics state represents all events that was defined on the page
// before findify

// You can listen for events with `listen` function
var unsubscribe = client.listen(function(event, payload) {
  console.log(event); // outputs event name
  console.log(payload); // outputs event payload
});
Suggest Edits

client.sendEvent(type, request)

 

This method has dynamic request argument. It depends on provided event type. See description below to get definitions of request argument for every event type.

Click suggestion event arguments:

type required ('click-suggestion'): Click suggestion event type.
request.rid required (string): Id of request, where user clicked on suggestion.
request.suggestion required (string): Suggestion title.

Click item event arguments:

type required ('click-item'): Click item event type.
request.item_id required (string): Id of item, which user clicked.
request.variant_item_id optional (string): Id of item variant.
request.rid optional (string): Id of request, where user clicked on item.

Redirect event arguments:

type required ('redirect'): Redirect event type.
request.rid required (string): Id of request, where redirect was happened.
request.suggestion required (string): Suggestion that leads to the redirection.

Purchase event arguments:

type required ('purchase'): Purchase event type.
request.order_id required (string): Id of order.
request.currency required (string): Currency of the purchase.
request.revenue required (number): Total revenue of the purchase.
request.total_discount optional (number): Total discount of the purchase.
request.total_tax optional (number): Total tax of the purchase.
request.shipping optional (number): Total shipping of the purchase.
request.line_items required (line_item[]): Items in cart.
request.affiliation optional (string): Affiliation of the purchase.

Update cart event arguments:

type required ('update-cart'): Update cart event type.
request.line_items required (line_item[]): Items in cart.

Add to cart event arguments:

type required ('add-to-cart'): Add to cart event type.
request.item_id required (string): Id of item, added to cart.
request.variant_item_id optional (string): Id of item variant.
request.rid optional (string): Id of request, where add to cart button was clicked.
request.quantity optional (number): Quantity of items, added to cart. Default - 1.

View page event arguments:

type required ('view-page'): View page event type.
request.item_id optional (string): Id of item. Only for product pages.
request.variant_item_id optional (string): Id of item variant.

Types:

line_item.item_id required (string): Id of item.
line_item.unit_price required (string): Price of the product.
line_item.quantity required (number): Quantity of items.
line_item.variant_item_id optional (string): Id of item variant.

Examples of usage:

// Click suggestion event
var request = {
    rid: '892',
    suggestion: 'White t-shirts'
};

client.sendEvent('click-suggestion', request);

// Click item event
var request = {
    rid: '892',
    item_id: '9842'
};

client.sendEvent('click-item', request);

// Redirect event
var request = {
    rid: '892',
    suggestion: '9842'
};

client.sendEvent('redirect', request);

// Purchase event
var request = {
    order_id: '451',
    currency: 'usd',
    revenue: 394.1,
    line_items: [{
        item_id: '5028',
        unit_price: 394.1,
        quantity: 2
    }]
};

client.sendEvent('purchase', request);

// Update cart event
var request = {
    line_items: [{
        item_id: '5028',
        unit_price: 394.1,
        quantity: 2
    }]
};

client.sendEvent('update-cart', request);

// Add to cart event
var request = {
    item_id: '5720',
    rid: '72046',
    quantity: 1,
};

client.sendEvent('add-to-cart', request);

// View page event
var request = {
    item_id: '8572'
};

client.sendEvent('view-page', request);
Suggest Edits

client.user

 

Returns:

Returns user object, which can be used further in FindifySDK, FindifyHelpers libraries or in plain Findify REST API.

Examples of usage:

var user = client.user;

var findifySdkClient = FindifySDK.init({
    key: 'f8923hg20hg248g8g9h',
    user: user
});
Suggest Edits

Introduction

 

Findify JS SDK is a JavaScript wrapper of the low-level JSON API.

Suggest Edits

FindifySDK.init(config)

 

Initializes library.

Arguments:

config.key required (string): Merchant API key.
config.user optional (user): User object. Could be provided either at initialization or at request.
config.method optional ('jsonp' || 'post'): Request method. Default 'jsonp'.
config.log optional (boolean): Defines, should Findify log requests on server.

Types:

user.uid required (string): Unique customer id.
user.sid required (string): Session id.
user.email optional (string): Customer email.
user.ip optional (number): Customer ip.
user.ua optional (string): Customer user agent.
user.lang optional (string[]): Languages.

Returns:

Client instance, which could be used further for sending requests to the server.

Examples of usage:

var client = FindifySDK.init({
    key: 'b9h348b89h439g43',
    user: {
        uid: 'f892hf2938f2g9p2',
        sid: 'g2984hg2jg9823g9',
    }
});

// After, you can send requests to server:
client.autocomplete(request).then(function (response) {
    // handle autocomplete response
});
Suggest Edits

client.autocomplete(request)

 

Arguments:

request.q required (string): Autocomplete query.
request.suggestion_limit optional (number): Limit of search suggestions.
request.item_limit optional (number): Limit of product matches.
request.user optional (object): User object. Could be provided either at initialization or at request.

Types:

user.uid required (string): Unique customer id.
user.sid required (string): Session id.
user.email optional (string): Customer email.
user.ip optional (number): Customer ip.
user.ua optional (string): Customer user agent.
user.lang optional (string[]): Languages.

Returns:

List of search suggestions queries, product matches and query meta data.

Examples of usage:

var request = {
    q: 'White t-shirt',
    suggestion_limit: 5,
    item_limit: 10,
};

client.autocomplete(request).then(function(response) {
    // handle autocomplete response
});
Suggest Edits

client.collection(request)

 

Arguments:

request.slot required (string): Name of collection slot.
request.offset optional (number): Offset of products items. Used in pagination.
request.limit optional (number): Number of products in result.
request.filters optional (filter[]): Array of selected filters.
request.sort optional (sort[]): Array of selected sortings.
request.user optional (user): User object. Could be provided either at initialization or at request.

Types

filter.name required (string): Name of filter.
filter.type required (string): Type of filter.
filter.values optional (object[]): Array of selected filter values.
filter.values[].value optional (string): Selected filter value.
filter.values[].from optional (string): Selected range filter "from" value.
filter.values[].to optional (string): Selected range filter "to" value.

sort.field required (string): Field for sorting.
sort.order required ('desc' || 'asc'): Sorting order.

user.uid required (string): Unique customer id.
user.sid required (string): Session id.
user.email optional (string): Customer email.
user.ip optional (number): Customer ip.
user.ua optional (string): Customer user agent.
user.lang optional (string[]): Languages.

Returns:

Smart collection with products list, selected facets list and meta data.

Examples of usage:

var request = {
    slot: 't-shirts',
    offset: 20,
    limit: 15,
    filters: [{
        name: 'category1',
        type: 'category',
        values: [{
            value: 'T-Shirts'
        }]
    }],
    sort: [{
        field: 'price',
        order: 'asc'
    }]
};

client.collection(request).then(function(response) {
    // handle collection response
});
Suggest Edits

client.recommendations(type, request)

 

Emits events to recommendation store.

Predefined recommendation request event

event.name required ('request'): Predefined recommendation request event name.
event.payload.slot required (string): Slot value.
event.payload.item_id optional (string)
event.payload.user optional (object): User object. Could be provided either at initialization or at request.

Newest recommendation request event

event.name required ('newest'): Newest recommendation request event name.
event.payload.offset optional (string): Offset of products in response.
event.payload.limit optional (string): Number of products in response.
event.payload.user optional (object): User object. Could be provided either at initialization or at request.

Trending recommendation request event

event.name required ('trending'): Trending recommendation request event name.
event.payload.offset optional (string): Offset of products in response.
event.payload.limit optional (string): Number of products in response.
event.payload.user optional (object): User object. Could be provided either at initialization or at request.

Latest recommendation request event

event.name required ('latest'): Latest recommendation request event name.
event.payload.offset optional (string): Offset of products in response.
event.payload.limit optional (string): Number of products in response.
event.payload.user optional (object): User object. Could be provided either at initialization or at request.

Viewed recommendation request event

event.name required ('viewed'): Viewed recommendation request event name.
event.payload.item_id required (string)
event.payload.offset optional (string): Offset of products in response.
event.payload.limit optional (string): Number of products in response.
event.payload.user optional (object): User object. Could be provided either at initialization or at request.

Bought recommendation request event

event.name required ('bought'): Bought recommendation request event name.
event.payload.item_id required (string)
event.payload.offset optional (string): Offset of products in response.
event.payload.limit optional (string): Number of products in response.
event.payload.user optional (object): User object. Could be provided either at initialization or at request.

Frequently purchased recommendation request event

event.name required ('frequentlyPurchased'): Frequently purchased recommendation request event name.
event.payload.item_ids required ((string | number)[]): Array of items ids.
event.payload.offset optional (string): Offset of products in response.
event.payload.limit optional (string): Number of products in response.
event.payload.user optional (object): User object. Could be provided either at initialization or at request.

Set request body event:

event.name required ('setRequestBody'): Set request body event name.
event.payload required (object): FindifySDK recommendation request data.

Featured recommendation request event

event.name required ('featured'): Featured recommendation request event name.
event.payload.user optional (object): User object. Could be provided either at initialization or at request.

Types:

user.uid required (string): Unique customer id.
user.sid required (string): Session id.
user.email optional (string): Customer email.
user.ip optional (number): Customer ip.
user.ua optional (string): Customer user agent.
user.lang optional (string[]): Languages.

Returns:

Recommendation store instance.

Examples of usage:

// Predefined recommendation
predefinedRecommendationStore
    .emit({
        name: 'request',
        payload: {
            slot: 'slotValue',
            item_id: '10'
        }
    });

// Newest recommendation
newestRecommendationStore
    .emit({
        name: 'request',
        payload: {
            offset: 5,
            limit: 10
        }
    });

// Trending recommendation
trendingRecommendationStore
    .emit({
        name: 'request',
        payload: {
            offset: 5,
            limit: 10
        }
    });

// Latest recommendation
latestRecommendationStore
    .emit({
        name: 'request',
        payload: {
            offset: 5,
            limit: 10
        }
    });

// Viewed recommendation
viewedRecommendationStore
    .emit({
        name: 'request',
        payload: {
            offset: 5,
            limit: 10,
            item_id: '10'
        }
    });

// Bought recommendation
boughtRecommendationStore
    .emit({
        name: 'request',
        payload: {
            offset: 5,
            limit: 10,
            item_id: '10'
        }
    });

// Frequently purchased recommendation
frequentlyPurchasedRecommendationStore
    .emit({
        name: 'request',
        payload: {
            offset: 5,
            limit: 10,
            item_ids: ['10', '11']
        }
    });


// Featured recommendation
featuredRecommendationStore
    .emit({
        name: 'request'
    });

// `setRequestBody` event
viewedRecommendationStore
    .emit({
        name: 'setRequestBody',
        payload: {
            offset: 10
        }
    })
    .emit({
        name: 'request'
    });
Suggest Edits

client.feedback(type, request)

 

This method has dynamic request argument. It depends on provided event type. See description below to get definitions of request argument for every event type.

Click suggestion event arguments:

type required ('click-suggestion'): Click suggestion event type.
request.rid required (string): Id of request, where user clicked on suggestion.
request.suggestion required (string): Suggestion title.
request.user optional (user): User object. Could be provided either at initialization or at request.

Click item event arguments:

type required ('click-item'): Click item event type.
request.item_id required (string): Id of item, which user clicked.
request.rid optional (string): Id of request, where user clicked on item.
request.user optional (user): User object. Could be provided either at initialization or at request.

Redirect event arguments:

type required ('redirect'): Redirect event type.
request.rid required (string): Id of request, where redirect was happened.
request.suggestion required (string): Suggestion that leads to the redirection.
request.user optional (user): User object. Could be provided either at initialization or at request.

Purchase event arguments:

type required ('purchase'): Purchase event type.
request.order_id required (string): Id of order.
request.currency required (string): Currency of the purchase.
request.revenue required (number): Total revenue of the purchase.
request.line_items required (line_item[]): Items in cart.
request.affiliation optional (string): Affiliation of the purchase.
request.user optional (user): User object. Could be provided either at initialization or at request.

Update cart event arguments:

type required ('update-cart'): Update cart event type.
request.line_items required (line_item[]): Items in cart.
request.user optional (user): User object. Could be provided either at initialization or at request.

Add to cart event arguments:

type required ('add-to-cart'): Add to cart event type.
request.item_id required (string): Id of item, added to cart.
request.rid optional (string): Id of request, where add to cart button was clicked.
request.quantity optional (number): Quantity of items, added to cart. Default - 1.
request.user optional (user): User object. Could be provided either at initialization or at request.

View page event arguments:

type required ('view-page'): View page event type.
request.url required (string): Url of the page viewed.
request.ref required (string): Referrer of the page.
request.width required (number): Width of the customer's browser.
request.height required (number): Height of the customer's browser.
request.item_id optional (string): Id of item. Only for product pages.
request.user optional (user): User object. Could be provided either at initialization or at request.

Types:

line_item.id required (string): Id of item.
line_item.unit_price required (string): Price of the product.
line_item.quantity required (number): Quantity of items.

user.uid required (string): Unique customer id.
user.sid required (string): Session id.
user.email optional (string): Customer email.
user.ip optional (number): Customer ip.
user.ua optional (string): Customer user agent.
user.lang optional (string[]): Languages.

Examples of usage:

// Click suggestion event
var request = {
    rid: '892',
    suggestion: 'White t-shirts'
};

client.feedback('click-suggestion', request);

// Click item event
var request = {
    rid: '892',
    item_id: '9842'
};

client.feedback('click-item', request);

// Redirect event
var request = {
    rid: '892',
    suggestion: 'T-shirt'
};

client.feedback('redirect', request);

// Purchase event
var request = {
    order_id: '451',
    currency: 'usd',
    revenue: 394.1,
    line_items: [{
        item_id: '5028',
        unit_price: 394.1,
        quantity: 2
    }]
};

client.feedback('purchase', request);

// Update cart event
var request = {
    line_items: [{
        item_id: '5028',
        unit_price: 394.1,
        quantity: 2
    }]
};

client.feedback('update-cart', request);

// Add to cart event
var request = {
    item_id: '5720',
    rid: '72046',
    quantity: 1,
};

client.feedback('add-to-cart', request);

// View page event
var request = {
    url: 'some-store.com',
    ref: 'some-referrer.com',
    width: 1366,
    height: 768,
    item_id: '8572'
};

client.feedback('view-page', request);
Suggest Edits

Introduction

 

Helpers JS is a Search API state handling library. It provides convenient interface for developers to build applications. You can emit events, subscribe on them and get the right data without diving in API implementation.

Suggest Edits

FindifyHelpers.createAutocomplete(config)

 

Creates autocomplete store.

Arguments:

config.key required (string): Merchant API key.
config.user optional (user): User object. Could be provided either at initialization or at request.
config.method optional ('jsonp' || 'post'): Request method. Default 'jsonp'.
config.log optional (boolean): Defines, should Findify log requests on server.

Types:

user.uid required (string): Unique customer id.
user.sid required (string): Session id.
user.email optional (string): Customer email.
user.ip optional (number): Customer ip.
user.ua optional (string): Customer user agent.
user.lang optional (string[]): Languages.

Returns:

Autocomplete store instance, which could be used further for emitting events and subscribing on them.

Examples of usage:

var autocompleteStore = FindifyHelpers.createAutocomplete({
    key: 'b9h348b89h439g43',
    user: {
        uid: 'f892hf2938f2g9p2',
        sid: 'g2984hg2jg9823g9',
    }
});

// After you can emit events
autocompleteStore.emit({
    name: 'input',
    payload: {
        query: 'white t-shirt'
    }
}).emit({
    name: 'request',
});

// And subscribe on store changes
autocompleteStore.subscribe(function(event) {
    if (event.name === 'request') {
        // handle requestBody data
        var requestBody = autocompleteStore.get('request');
    }

    if (event.name === 'responseSuccess') {
        // handle responseBody data
        var responseBody = autocompleteStore.get('response');
    }
});
Suggest Edits

autocompleteStore.emit(event)

 

Emits events to autocomplete store.

Input event:

event.name required ('input'): Input event name.
event.payload.query required (string): Search query value.

Set request body event:

event.name required ('setRequestBody'): Set request body event name.
event.payload required (object): FindifySDK autocomplete request data.

Request event:

event.name required ('request'): Request event name.
event.payload.itemsLimit optional (number): Product matches limit.
event.payload.suggestionsLimit optional (number): Search suggestions limit.
event.payload.user optional (object): User object. Could be provided either at initialization or at request.

Types:

user.uid required (string): Unique customer id.
user.sid required (string): Session id.
user.email optional (string): Customer email.
user.ip optional (number): Customer ip.
user.ua optional (string): Customer user agent.
user.lang optional (string[]): Languages.

Returns:

Autocomplete store instance.

Examples of usage:

autocompleteStore
  .emit({
      name: 'input',
      payload: {
          query: 'white t-shirt'
      }
  }).emit({
      name: 'request',
      payload: {
          itemsLimit: 10,
          suggestionsLimit: 10,
          user: {
              uid: 'f892hf2938f2g9p2',
              sid: 'g2984hg2jg9823g9',
          }
      }
  });

autocompleteStore
  .emit({
      name: 'setRequestBody',
      payload: {
          q: 'white t-shirt',
          suggestion_limit: 1,
          item_limit: 10
      }
  }).emit({
      name: 'request'
  });
Suggest Edits

autocompleteStore.subscribe(listener)

 

Subscribes on store changes.

Arguments:

listener required (function): Listener function, which will be called on every state change.

Listener function arguments:

event required (object): Autocomplete subscribe event. It could be either responseSuccess, responseFailure or emitting event like input etc...

Examples of usage:

autocompleteStore.subscribe(function(event) {
    if (event.name === 'request') {
        // handle requestBody data
        var requestBody = autocompleteStore.get('request');
    }

    if (event.name === 'responseSuccess') {
        // handle responseBody data
        var responseBody = autocompleteStore.get('response');
    }
  
    // other events handling
});
Suggest Edits

autocompleteStore.get(name)

 

Returns state data by given name param.

Arguments:

name required ('request' | 'response' | 'responseMeta'): State data name.

Returns:

State data. It could be request body, response body or response meta data like fetching state status.

Examples of usage:

autocompleteStore.subscribe(function(event) {
    if (event.name === 'request') {
        var requestBody = autocompleteStore.get('request');
    }

    if (event.name === 'responseSuccess') {
        var responseBody = autocompleteStore.get('response');
    }
  
    var isFetching = autocompleteStore.get('responseMeta').isFetching;
});
Suggest Edits

FindifyHelpers.createSearch(config)

 

Creates autocomplete store.

Arguments:

config.key required (string): Merchant API key.
config.user optional (user): User object. Could be provided either at initialization or at request.
config.method optional ('jsonp' || 'post'): Request method. Default 'jsonp'.
config.log optional (boolean): Defines, should Findify log requests on server.

Types:

user.uid required (string): Unique customer id.
user.sid required (string): Session id.
user.email optional (string): Customer email.
user.ip optional (number): Customer ip.
user.ua optional (string): Customer user agent.
user.lang optional (string[]): Languages.

Returns:

Search store instance, which could be used further for emitting events and subscribing on them.

Examples of usage:

var searchStore = FindifyHelpers.createSearch({
    key: 'b9h348b89h439g43',
    user: {
        uid: 'f892hf2938f2g9p2',
        sid: 'g2984hg2jg9823g9',
    }
});

// After you can emit events
searchStore.emit({
    name: 'search',
    payload: {
        query: 'white t-shirt'
    }
}).emit({
    name: 'request',
});

// And subscribe on store changes
searchStore.subscribe(function(event) {
    if (event.name === 'request') {
        // handle requestBody data
        var requestBody = searchStore.get('request');
    }

    if (event.name === 'responseSuccess') {
        // handle responseBody data
        var responseBody = searchStore.get('response');
    }
});
Suggest Edits

searchStore.emit(event)

 

Emits events to search store.

Search event:

event.name required ('search'): Search event name.
event.payload.query required (string): Search query value.

Next page event:

event.name required ('nextPage'): Next page event name.

Prev page event:

event.name required ('prevPage'): Prev page event name.

Set page event:

event.name required ('setPage'): Set page event name.
event.payload.page required (number): Page number.

Set sorting event:

event.name required ('setSorting'): Set sorting event name.
event.payload.field required (string): Field name.
event.payload.order required ('asc' | 'desc'): Sorting order.

Unset sorting event:

event.name required ('unsetSorting'): Unset sorting event name.
event.payload.field required (string): Field name.

Set nested list facet event:

event.name required ('setNestedListFacet'): Set nested list facet event name.
event.payload.name required (string): Facet name.
event.payload.value required (string): Facet value.

Unset nested list facet event:

event.name required ('unsetNestedListFacet'): Unset nested list facet event name.
event.payload.name required (string): Facet name.
event.payload.value required (string): Facet value.

Set text list facet event:

event.name required ('setTextFacet'): Set text list facet event name.
event.payload.name required (string): Facet name.
event.payload.value required (string): Facet value.

Unset text list facet event:

event.name required ('unsetTextFacet'): Unset text list facet event name.
event.payload.name required (string): Facet name.
event.payload.value required (string): Facet value.

Set range facet event:

event.name required ('setRangeFacet'): Set range facet event name.
event.payload.name required (string): Facet name.
event.payload.from optional (string): From value.
event.payload.to optional (string): To value.

Unset range facet event:

event.name required ('unsetRangeFacet'): Unset range facet event name.
event.payload.name required (string): Facet name.
event.payload.from optional (string): From value.
event.payload.to optional (string): To value.

Set request body event:

event.name required ('setRequestBody'): Set request body event name.
event.payload required (object): FindifySDK search request data.

Request event:

event.name required ('request'): Request event name.
event.payload.limit optional (number): Product results limit.
event.payload.user optional (object): User object. Could be provided either at initialization or at request.

Types:

user.uid required (string): Unique customer id.
user.sid required (string): Session id.
user.email optional (string): Customer email.
user.ip optional (number): Customer ip.
user.ua optional (string): Customer user agent.
user.lang optional (string[]): Languages.

Returns:

Search store instance.

Examples of usage:

// `search` and `request` events
searchStore
    .emit({
        name: 'search',
        payload: {
            query: 'white t-shirt'
        }
    })
    .emit({
        name: 'request',
        payload: {
            limit: 10
        }
    });

// `setPage`, `nextPage` and `prevPage` events
searchStore
    .emit({
        name: 'setPage',
        payload: {
            page: 5
        }
    })
    .emit({
        name: 'prevPage'
    })
    .emit({
        name: 'nextPage'
    });

// `setSorting` and `unsetSorting` events
searchStore
    .emit({
        name: 'setSorting',
        payload: {
            field: 'price',
            order: 'asc'
        }
    })
    // You can apply multiple sortings
    .emit({
        name: 'setSorting',
        payload: {
            field: 'date',
            order: 'asc'
        }
    })
    .emit({
        name: 'unsetSorting',
        payload: {
            field: 'date'
        }
    });

// `setNestedListFacet` and `unsetNestedListFacet`
searchStore
    .emit({
        name: 'setNestedListFacet',
        // setting value of 1 level nesting
        payload: {
            name: 'categories1',
            value: 'black'
        }
    })
    .emit({
        name: 'setNestedListFacet',
        // setting value of 2 level nesting
        payload: {
            name: 'categories2',
            value: 'shirt'
        }
    })
    .emit({
        name: 'unsetNestedListFacet',
        payload: {
            name: 'category1'
        }
    });

// `setTextFacet` and `unsetTextFacet`
searchStore
    .emit({
        name: 'setTextFacet'
        payload: {
          name: 'shirts',
          value: 'black'
        }
    })
    .emit({
        name: 'setTextFacet'
        // you can set multiple values
        payload: {
          name: 'shirts',
          value: 'red'
        }
    })
    .emit({
        name: 'unsetTextFacet'
        // you can unset needed value
        payload: {
          name: 'shirts',
          value: 'black'
        }
    });

// `setRangeFacet` and `unsetRangeFacet`
searchStore
    .emit({
        name: 'setRangeFacet',
        // you need to set either `from` or `to` value
        payload: {
            name: 'price'
            from: 10
        }
    })
    .emit({
        name: 'setRangeFacet',
        // you can set multiple ranges for one name
        payload: {
            name: 'price'
            from: 40,
            to: 70
        }
    })
    .emit({
        name: 'unsetRangeFacet',
        // you can unset needed ranges
        payload: {
            name: 'price'
        }
    });

// `setRequestBody`
searchStore
    .emit({
        name: 'setRequestBody',
        payload: {
            q: 'white t-shirt'
        }
    })
    .emit({
        name: 'request'
    });
Suggest Edits

searchStore.subscribe(event)

 

Subscribes on store changes.

Arguments:

listener required (function): Listener function, which will be called on every state change.

Listener function arguments:

event required (object): Search subscribe event. It could be either responseSuccess, responseFailure or emitting event like search, setPage etc...

Examples of usage:

searchStore.subscribe(function(event) {
    if (event.name === 'request') {
        // handle requestBody data
        var requestBody = searchStore.get('request');
    }

    if (event.name === 'responseSuccess') {
        // handle responseBody data
        var responseBody = searchStore.get('response');
    }
  
    // other events handling
});
Suggest Edits

searchStore.get(name)

 

Returns state data by given name param.

Arguments:

name required ('request' | 'response' | 'responseMeta'): State data name.

Returns:

State data. It could be request body, response body or response meta data like fetching state status.

Examples of usage:

searchStore.subscribe(function(event) {
    if (event.name === 'request') {
        var requestBody = searchStore.get('request');
    }

    if (event.name === 'responseSuccess') {
        var responseBody = searchStore.get('response');
    }
  
    var isFetching = searchStore.get('responseMeta').isFetching;
});
Suggest Edits

FindifyHelpers.createCollection(slot, config)

 

Creates autocomplete store.

Arguments:

slot required (string): Collection slot value.
config.key required (string): Merchant API key.
config.user optional (user): User object. Could be provided either at initialization or at request.
config.method optional ('jsonp' || 'post'): Request method. Default 'jsonp'.
config.log optional (boolean): Defines, should Findify log requests on server.

Types:

user.uid required (string): Unique customer id.
user.sid required (string): Session id.
user.email optional (string): Customer email.
user.ip optional (number): Customer ip.
user.ua optional (string): Customer user agent.
user.lang optional (string[]): Languages.

Returns:

Collection store instance, which could be used further for emitting events and subscribing on them.

Examples of usage:

var collectionStore = FindifyHelpers.createCollection('slotValue', {
    key: 'b9h348b89h439g43',
    user: {
        uid: 'f892hf2938f2g9p2',
        sid: 'g2984hg2jg9823g9',
    }
});

// After you can emit events
collectionStore.emit({
    name: 'request',
});

// And subscribe on store changes
collectionStore.subscribe(function(event) {
    if (event.name === 'request') {
        // handle requestBody data
        var requestBody = collectionStore.get('request');
    }

    if (event.name === 'responseSuccess') {
        // handle responseBody data
        var responseBody = collectionStore.get('response');
    }
});
Suggest Edits

collectionStore.emit(event)

 

Emits events to search store.

Search event:

event.name required ('search'): Search event name.
event.payload.query required (string): Search query value.

Next page event:

event.name required ('nextPage'): Next page event name.

Prev page event:

event.name required ('prevPage'): Prev page event name.

Set page event:

event.name required ('setPage'): Set page event name.
event.payload.page required (number): Page number.

Set sorting event:

event.name required ('setSorting'): Set sorting event name.
event.payload.field required (string): Field name.
event.payload.order required ('asc' | 'desc'): Sorting order.

Unset sorting event:

event.name required ('unsetSorting'): Unset sorting event name.
event.payload.field required (string): Field name.

Set nested list facet event:

event.name required ('setNestedListFacet'): Set nested list facet event name.
event.payload.name required (string): Facet name.
event.payload.value required (string): Facet value.

Unset nested list facet event:

event.name required ('unsetNestedListFacet'): Unset nested list facet event name.
event.payload.name required (string): Facet name.
event.payload.value required (string): Facet value.

Set text list facet event:

event.name required ('setTextFacet'): Set text list facet event name.
event.payload.name required (string): Facet name.
event.payload.value required (string): Facet value.

Unset text list facet event:

event.name required ('unsetTextFacet'): Unset text list facet event name.
event.payload.name required (string): Facet name.
event.payload.value required (string): Facet value.

Set range facet event:

event.name required ('setRangeFacet'): Set range facet event name.
event.payload.name required (string): Facet name.
event.payload.from optional (string): From value.
event.payload.to optional (string): To value.

Unset range facet event:

event.name required ('unsetRangeFacet'): Unset range facet event name.
event.payload.name required (string): Facet name.
event.payload.from optional (string): From value.
event.payload.to optional (string): To value.

Set request body event:

event.name required ('setRequestBody'): Set request body event name.
event.payload required (object): FindifySDK collection request data.

Request event:

event.name required ('request'): Request event name.
event.payload.limit optional (number): Product results limit.
event.payload.user optional (object): User object. Could be provided either at initialization or at request.

Types:

user.uid required (string): Unique customer id.
user.sid required (string): Session id.
user.email optional (string): Customer email.
user.ip optional (number): Customer ip.
user.ua optional (string): Customer user agent.
user.lang optional (string[]): Languages.

Returns:

Collection store instance.

Examples of usage:

// `setPage`, `nextPage` and `prevPage` events
collectionStore
    .emit({
        name: 'setPage',
        payload: {
            page: 5
        }
    })
    .emit({
        name: 'prevPage'
    })
    .emit({
        name: 'nextPage'
    });

// `setSorting` and `unsetSorting` events
collectionStore
    .emit({
        name: 'setSorting',
        payload: {
            name: 'price',
            order: 'asc'
        }
    })
    // You can apply multiple sortings
    .emit({
        name: 'setSorting',
        payload: {
            name: 'date',
            order: 'asc'
        }
    })
    .emit({
        name: 'unsetSorting',
        payload: {
            name: 'date'
        }
    });

// `setNestedListFacet` and `unsetNestedListFacet`
collectionStore
    .emit({
        name: 'setNestedListFacet',
        // setting value of 1 level nesting
        payload: {
            name: 'categories1',
            value: 'black'
        }
    })
    .emit({
        name: 'setNestedListFacet',
        // setting value of 2 level nesting
        payload: {
            name: 'categories2',
            value: 'shirt'
        }
    })
    .emit({
        name: 'unsetNestedListFacet',
        payload: {
            name: 'category1'
        }
    });

// `setTextFacet` and `unsetTextFacet`
collectionStore
    .emit({
        name: 'setTextFacet'
        payload: {
          name: 'shirts',
          value: 'black'
        }
    })
    .emit({
        name: 'setTextFacet'
        // you can set multiple values
        payload: {
          name: 'shirts',
          value: 'red'
        }
    })
    .emit({
        name: 'unsetTextFacet'
        // you can unset needed value
        payload: {
          name: 'shirts',
          value: 'black'
        }
    });

// `setRangeFacet` and `unsetRangeFacet`
collectionStore
    .emit({
        name: 'setRangeFacet',
        // you need to set either `from` or `to` value
        payload: {
            name: 'price'
            from: 10
        }
    })
    .emit({
        name: 'setRangeFacet',
        // you can set multiple ranges for one name
        payload: {
            name: 'price'
            from: 40,
            to: 70
        }
    })
    .emit({
        name: 'unsetRangeFacet',
        // you can unset needed ranges
        payload: {
            name: 'price'
        }
    });

// `setRequestBody`
searchStore
    .emit({
        name: 'setRequestBody',
        payload: {
            offset: 10
        }
    })
    .emit({
        name: 'request'
    });
Suggest Edits

collectionStore.subscribe(listener)

 

Subscribes on store changes.

Arguments:

listener required (function): Listener function, which will be called on every state change.

Listener function arguments:

event required (object): Collection subscribe event. It could be either responseSuccess, responseFailure or emitting event like setPage, nextPage etc...

Examples of usage:

collectionStore.subscribe(function(event) {
    if (event.name === 'request') {
        // handle requestBody data
        var requestBody = collectionStore.get('request');
    }

    if (event.name === 'responseSuccess') {
        // handle responseBody data
        var responseBody = collectionStore.get('response');
    }
  
    // other events handling
});
Suggest Edits

collectionStore.get(name)

 

Returns state data by given name param.

Arguments:

name required ('request' | 'response' | 'responseMeta'): State data name.

Returns:

State data. It could be request body, response body or response meta data like fetching state status.

Examples of usage:

collectionStore.subscribe(function(event) {
    if (event.name === 'request') {
        var requestBody = collectionStore.get('request');
    }

    if (event.name === 'responseSuccess') {
        var responseBody = collectionStore.get('response');
    }
  
    var isFetching = collectionStore.get('responseMeta').isFetching;
});
Suggest Edits

FindifyHelpers.createRecommendation(type, config)

 

Creates recommendation store.

type required ('predefined' | 'newest' | 'trending' | 'featured' | 'latest' | 'viewed' | 'bought'): Recommendation type.
config required (object): Config object.

Types

config.key required (string): Merchant API key.
config.user optional (user): User object. Could be provided either at initialization or at request.
config.method optional ('jsonp' || 'post'): Request method. Default 'jsonp'.
config.log optional (boolean): Defines, should Findify log requests on server.

Returns:

Recommendation store instance, which could be used further for emitting events and subscribing on them.

Examples of usage:

var predefinedRecommendationStore = FindifyHelpers.createRecommendation('predefined', {
    key: 'b9h348b89h439g43',
    user: {
        uid: 'f892hf2938f2g9p2',
        sid: 'g2984hg2jg9823g9',
    }
});

// After you can emit events
predefinedRecommendationStore.emit({
    name: 'request',
    payload: {
        slot: 'slotValue'
    }
});

// And subscribe on store changes
predefinedRecommendationStore.subscribe(function(event) {
    if (event.name === 'request') {
        // handle requestBody data
        var requestBody = predefinedRecommendationStore.get('request');
    }

    if (event.name === 'responseSuccess') {
        // handle responseBody data
        var responseBody = predefinedRecommendationStore.get('response');
    }
});
Suggest Edits

recommendationStore.emit(event)

 

Emits events to recommendation store.

Predefined recommendation request event

event.name required ('request'): Predefined recommendation request event name.
event.payload.slot required (string): Slot value.
event.payload.item_id optional (string)
event.payload.user optional (object): User object. Could be provided either at initialization or at request.

Newest recommendation request event

event.name required ('newest'): Newest recommendation request event name.
event.payload.offset optional (string): Offset of products in response.
event.payload.limit optional (string): Number of products in response.
event.payload.user optional (object): User object. Could be provided either at initialization or at request.

Trending recommendation request event

event.name required ('trending'): Trending recommendation request event name.
event.payload.offset optional (string): Offset of products in response.
event.payload.limit optional (string): Number of products in response.
event.payload.user optional (object): User object. Could be provided either at initialization or at request.

Latest recommendation request event

event.name required ('latest'): Latest recommendation request event name.
event.payload.offset optional (string): Offset of products in response.
event.payload.limit optional (string): Number of products in response.
event.payload.user optional (object): User object. Could be provided either at initialization or at request.

Viewed recommendation request event

event.name required ('viewed'): Viewed recommendation request event name.
event.payload.item_id required (string)
event.payload.offset optional (string): Offset of products in response.
event.payload.limit optional (string): Number of products in response.
event.payload.user optional (object): User object. Could be provided either at initialization or at request.

Bought recommendation request event

event.name required ('bought'): Bought recommendation request event name.
event.payload.item_id required (string)
event.payload.offset optional (string): Offset of products in response.
event.payload.limit optional (string): Number of products in response.
event.payload.user optional (object): User object. Could be provided either at initialization or at request.

Set request body event:

event.name required ('setRequestBody'): Set request body event name.
event.payload required (object): FindifySDK recommendation request data.

Featured recommendation request event

event.name required ('featured'): Featured recommendation request event name.
event.payload.user optional (object): User object. Could be provided either at initialization or at request.

Types:

user.uid required (string): Unique customer id.
user.sid required (string): Session id.
user.email optional (string): Customer email.
user.ip optional (number): Customer ip.
user.ua optional (string): Customer user agent.
user.lang optional (string[]): Languages.

Returns:

Recommendation store instance.

Examples of usage:

// Predefined recommendation
predefinedRecommendationStore
    .emit({
        name: 'request',
        payload: {
            slot: 'slotValue',
            item_id: '10'
        }
    });

// Newest recommendation
newestRecommendationStore
    .emit({
        name: 'request',
        payload: {
            offset: 5,
            limit: 10
        }
    });

// Trending recommendation
trendingRecommendationStore
    .emit({
        name: 'request',
        payload: {
            offset: 5,
            limit: 10
        }
    });

// Latest recommendation
latestRecommendationStore
    .emit({
        name: 'request',
        payload: {
            offset: 5,
            limit: 10
        }
    });

// Viewed recommendation
viewedRecommendationStore
    .emit({
        name: 'request',
        payload: {
            offset: 5,
            limit: 10,
            item_id: '10'
        }
    });

// Bought recommendation
boughtRecommendationStore
    .emit({
        name: 'request',
        payload: {
            offset: 5,
            limit: 10,
            item_id: '10'
        }
    });


// Featured recommendation
featuredRecommendationStore
    .emit({
        name: 'request'
    });

// `setRequestBody` event
viewedRecommendationStore
    .emit({
        name: 'setRequestBody',
        payload: {
            offset: 10
        }
    })
    .emit({
        name: 'request'
    });
Suggest Edits

recommendationStore.subscribe(listener)

 

Subscribes on store changes.

Arguments:

listener required (function): Listener function, which will be called on every state change.

Listener function arguments:

event required (object): Recommendation subscribe event. It could be either responseSuccess, responseFailure or 'request` event.

Examples of usage:

recommendationStore.subscribe(function(event) {
    if (event.name === 'request') {
        // handle requestBody data
        var requestBody = recommendationStore.get('request');
    }

    if (event.name === 'responseSuccess') {
        // handle responseBody data
        var responseBody = recommendationStore.get('response');
    }
  
    // other events handling
});
Suggest Edits

recommendationStore.get(name)

 

Returns state data by given name param.

Arguments:

name required ('request' | 'response' | 'responseMeta'): State data name.

Returns:

State data. It could be request body, response body or response meta data like fetching state status.

Examples of usage:

recommendationStore.subscribe(function(event) {
    if (event.name === 'request') {
        var requestBody = recommendationStore.get('request');
    }

    if (event.name === 'responseSuccess') {
        var responseBody = recommendationStore.get('response');
    }
  
    var isFetching = recommendationStore.get('responseMeta').isFetching;
});
Suggest Edits

Introduction

 

UI Components is a set of React components, which can help you to build UI for your ecommerce application.

We're currently working on writing documentation, stay tuned.

Suggest Edits

UIComponents.Autocomplete

 

Autocomplete component. Can be rendered in two ways Mobile and Desktop.

Arguments:

suggestions required (suggestion[]): Search api suggestions response.
items optional (item[]): Search api items response.
meta.q optional (string): Search query value.
config optional (config): Config object.

isMobile optional (boolean): Renders mobile view if this variable set to true.
isMobileSimple optional (boolean): Renders simple mobile view if this variable set to true.
onSearchSuggestionClick optional (function): Callback, which will be called when user clicks on tip area.
onTipClick optional (function): Callback, which will be called when user clicks on search suggestion.

Types:

config.position optional ('left' | 'right'): Position of inner views. Default - 'left'.
config.i18n required (i18n): Translations object.

i18n.suggestionsTitle required (string): Suggestion title translation.
i18n.productMatchesTitle required (string): Product matches title translation.
i18n.tipTitle required (string): Tip title translation.

item.product_url required (string): Product link.
item.title optional (string): Product title.
item.price optional (number | number[]): Product price.
item.thumbnail_url optional (string): Product image.
item.compare_at optional (number): Product old price.

suggestion.value required (string): Search suggestion value.

Examples of usage:

var props = {
    config: {
        position: 'left',
        i18n: {
            suggestionsTitle: 'Search suggestions',
            productMatchesTitle: 'Product matches',
            tipTitle: 'Press enter to search'
        }
    },
    meta: {
        q: 'test query'
    },
    items: [{
        product_url: '/test',
        title: 'test',
        price: [200],
        thumbnail_url: 'http://placehold.it/100x100',
        compare_at: 150
    }],
    suggestions: [{
        value: 'test suggestion'
    }],
};

// Desktop Autocomplete view:
<Autocomplete {...props} />

// Mobile Autocomplete view:
<Autocomplete {...props} isMobile />

// Simple mobile Autocomplete view:
<Autocomplete {...props} isMobile isMobileSimple />
  
// Rendering Autocomplete with data from Search API:
<Autocomplete {...searchApiAutocompleteData} />
Suggest Edits

UIComponents.BreadCrumbs

 

BreadCrumbs component

Arguments:

filters required (filter[]): Search API meta.filters response data.
total optional (number): Total number of products.
query optional (string): Search query value.
config optional (config): Config object.
onChange optional (function): Callback function, which will be called after user clicked on breadcrumbs item.

Types:

config.facets.types optional (object): Mappings object, where key is facet name, value is facet type.
config.facets.labels optional (object): Mappings object, where key is facet name, value is facet label.
config.i18n.title optional (string): Title of breadcrumbs block. It has access to total and query variables.

Examples of usage:

<BreadCrumbs
    filters={[
        {
            "type": "category",
            "name": "category1",
            "values": [
                {
                  "value": "Katt"
                }
            ]
        }
    ]}
    total={20}
    query="White T-shirt"
    config={{
        i18n: {
            title: 'Showing ${ total } results for ${ query }:'
        }
    }},
    onChange={(filter) => {
        // do something
    }}
/>
Suggest Edits

UIComponents.CategoryFacet

 

CategoryFacet Component.

Arguments:

values required (object[]): Search API category type facet values data.
config required (config): Config object.
label optional (string): Facet label.
isOpen optional (boolean): Determines whether the facet opened or not.
onChange optional (function): Callback which will be called everytime when user clicks on list item.

Types:

config.i18n.goBackTitle optional (string): "Go back" title, displayed when user was opened 2nd menu level.
config.i18n.more optional (string): "Show more" button title, displayed in a collapsed view.
config.i18n.less optional (string): "Show less" button title, displayed in a expanded view.
config.maxItemsCount optional (number): Maximum rows length in a collapsed view.
config.rowHeight optional (number): Height of row node.

Examples of usage:

<CategoryFacet
    values={[
        {  
          "type":"category",
          "selected":false,
          "count":2864,
          "hasChildren":true,
          "value":"Hund",
          "name":"category1", 
          children: [
            {  
              "type":"category",
              "selected":false,
              "count":9,
              "hasChildren":true,
              "value":"Fågel",
              "name":"category1",
              children: [
                {  
                  "type":"category",
                  "selected":false,
                  "count":9,
                  "hasChildren":true,
                  "value":"Fågel1",
                  "name":"category1"
                },
                {  
                  "type":"category",
                  "selected":false,
                  "count":4,
                  "hasChildren":true,
                  "value":"Reptil1",
                  "name":"category1"
                },
                {  
                  "type":"category",
                  "selected":false,
                  "count":1,
                  "hasChildren":true,
                  "value":"Fisk1",
                  "name":"category1"
                }
              ]
            },
            {  
              "type":"category",
              "selected":false,
              "count":4,
              "hasChildren":true,
              "value":"Reptil",
              "name":"category1"
            },
            {  
              "type":"category",
              "selected":false,
              "count":1,
              "hasChildren":true,
              "value":"Fisk",
              "name":"category1"
            }
          ]
        }
    ]}
    config={{
        i18n: {
            goBackTitle: 'Go back',
            more: 'Show more',
            less: 'Show less'
        }
    }}
    label="Categories"
    isOpen={true}
/>
Suggest Edits

UIComponents.CheckboxFacet

 

CheckboxFacet Component.

Arguments:

values required (object[]): Search API text type facet values data.
config required (config): Config object.
label optional (string): Facet label.
isOpen optional (boolean): Determines whether the facet opened or not.
onChange optional (function): Callback which will be called everytime when user clicks on list item.

Types:

config.i18n.search optional (string): "Search" input placeholder title.
config.i18n.more optional (string): "Show more" button title, displayed in a collapsed view.
config.i18n.less optional (string): "Show less" button title, displayed in a expanded view.
config.maxItemsCount optional (number): Maximum rows length in a collapsed view.
config.rowHeight optional (number): Height of row node.

Examples of usage:

<CheckboxFacet
    values={[
        {
          "value":"Aktiv",
          "count":83,
          "selected":false
        },
        {  
          "value":"Light & Steriliserad",
          "count":75,
          "selected":false
        },
        {  
          "value":"Mature & Senior",
          "count":73,
          "selected":false
        }
    ]}
    config={{
        i18n: {
            search: 'Search',
            more: 'Show more',
            less: 'Show less'
        }
    }}
    label="Categories"
    isOpen={true}
/>
Suggest Edits

UIComponents.ColorFacet

 

ColorFacet Component.

Arguments:

values required (object[]): Search API category type facet values data.
config required (config): Config object.
label optional (string): Facet label.
isOpen optional (boolean): Determines whether the facet opened or not.
onChange optional (function): Callback which will be called everytime when user clicks on list item.

Types:

config.colorMappings required (object): Mappings object, where key is color value and value is color hex string or multicolor.

Examples of usage:

<ColorFacet
    values={[
        {
          "value":"Red",
          "count":83,
          "selected":false
        },
        {  
          "value":"Green",
          "count":75,
          "selected":false
        }
    ]}
    config={{
        colorMappings: {
            "Red": "#ff0000",
            "Green": "#00ff00"
        }
    }}
    isOpen={true}
/>
Suggest Edits

UIComponents.RangeFacet

 

RangeFacet Component.

Arguments:

values required (object[]): Search API range type facet values data.
config required (config): Config object.
min optional (number): Minimum available value in "from" input field.
max optional (number): Maximum available value in "to" input field.
label optional (string): Facet label.
isOpen optional (boolean): Determines whether the facet opened or not.
onChange optional (function): Callback which will be called everytime when user clicks on list item.

Types:

config.currency required (string): Currency.
config.i18n.submit optional (string): Submit button translation. Default - "Go".

Examples of usage:

<RangeFacet
    values={[
        {
          "count":83,
          "selected":false,
          "from": 10,
          "to": 20,
        },
        {
          "count":75,
          "selected":false,
          "from": 30
        },
        {
          "count":73,
          "selected":false,
          "to": 10
        }
    ]}
    label="Range"
    isOpen={true}
    config={{
        currency: 'USD'
    }}
/>
Suggest Edits

UIComponents.Grid

 

Grid Component.

Arguments:

columns required (string): Template string, describing what number of columns should have each child of Grid component. Each column is separated by | sign.

Examples of usage:

// Renders Grid, where FacetsLayout will have size of 4 colums and ProductsLayout 8 columns.
<Grid columns="4|8">
    <FacetsLayout {...facetsProps} />
    <ProductsLayout {...productsProps} />
</Grid>
Suggest Edits

UIComponents.Pagination

 

Pagination component.

Arguments:

total required (number): Total number of pages.
current required (number): Current selected page.
onChange optional (function): Callback function, which will be called each time user changes page.
config optional (config): Config object.

Types:

config.i18n.previous optional (string): "Previous" button text translation.
config.i18n.next optional (string): "Next" button text translation.

Examples of usage:

<Pagination
    total={5}
    current={2}
    onChange={{pageNumber) => {
        // change page logic
    }}
/>
Suggest Edits

UIComponents.Product

 

Product components.

Arguments:

product_url required (string): Product link.
title optional (string): Product title.
description optional (string): Product title.
price optional (string | number | number[]): Product price.
image_url optional
(string): Product image.
compare_at optional
(number): Product old price.
reviews optional
(reviews): Reviews score value and total reviews count.
onClick optional
(function): Callback function, which will be called everytime user clicks on product.
config optional
(config)*: Config object.

Types:

config.currency optional (string): Product price currency.
config.title.lines optional (number): Maximum lines in title.
config.title.display optional (boolean): Defines, should title be displayed or not.
config.description.lines optional (number): Maximum lines in description.
config.description.display optional (boolean): Defines, should description be displayed or not.

reviews.average_score required (number): Reviews score value.
reviews.total_reviews required (number): Total reviews count.

Examples of usage:

<Product
    title="Digital Ripped camo charcoal Quick-Dry Jersey"
    description="Quick-Dry Mesh breathable fabric 100% polyester Machine wash Imported"
    price={[
      15
    ]}
    image_url="https://test.com/image.png"
    product_url="http://test.com/product-url"
    reviews={{
      average_score: 5,
      total_reviews: 1
    }}
    compare_at={25}
    config={{
        currency: 'USD'
    }}
    onClick={function() {
        // do something
    }}
/>
Suggest Edits

UIComponent.Rating

 

Rating component

Arguments:

value required (number): Rating score value.
count required (number): Number of reviews.

Examples of usage:

<Rating value={1.5} count={5} />
Suggest Edits

UIComponents.Sorting

 

Sorting Component

Arguments:

options required (string[]): List of options, which will be rendered in dropdown.
config required (config): Config object.
value optional (string): Default selected value.
onChange optional (functional): Callback which will be called selects new item.

Types:

config.i18n.options required (object): Object with keys, which should correspond to options prop and values, which should contain translations strings.
config.i18n.title optional (string): Sorting block title.

Examples of usage:

<Sorting
    options={['price_value', 'newest_value']}
    config={{
        i18n: {
            options: {
                'price_value': 'Price',
                'newest_value': 'Newest'
            },
            title: 'Sorting'
        }
    }}
/>
Suggest Edits

UIComponents.ProductsCarousel

 

ProductsCarousel component

Arguments:

items required (item[]): Items array, which will be rendered in carousel.
config optional (config): Config object.
title optional (string): Title of carousel.

Types:

item.product_url required (string): Product link.
item.title optional (string): Product title.
item.description optional (string): Product title.
item.price optional (number | number[]): Product price.
item.image_url optional
(string): Product image.
item.compare_at optional
(number): Product old price.
item.currency optional
(string): Product price currency.
item.reviews optional
(reviews)*: Reviews score value and total reviews count.

config.slidesToShow optional (number): Number of slides to display at carousel.
config.product.currency optional (string): Product price currency.
config.product.title.lines optional (number): Maximum lines in title.
config.product.title.display optional (boolean): Defines, should title be displayed or not.
config.product.description.lines optional (number): Maximum lines in description.
config.product.description.display optional (boolean): Defines, should description be displayed or not.

Examples of usage:

<ProductsCarousel
    config={{
        slidesToShow: 5
    }}
    title="Customers who viewed this also viewed"
    items={[
        {
            title: "Digital Ripped camo charcoal Quick-Dry Jersey",
            description: "Quick-Dry Mesh breathable fabric 100% polyester Machine wash Imported",
            price: [
              15
            ],
            image_url: "https://test.com/image.png",
            product_url: "http://test.com/product-url",
            reviews: {
              average_score: 5,
              total_reviews: 1
            },
            compare_at: 25,
            currency: "USD" 
        }
        // other items objects
    ]}
/>
Suggest Edits

UIComponents.ProductsGrid

 

ProductsGrid component

Arguments:

items required (item[]): Items array, which will be rendered in carousel.
title optional (string): Title of carousel.
config optional (config): Config object.

Types:

item.product_url required (string): Product link.
item.title optional (string): Product title.
item.description optional (string): Product title.
item.price optional (number | number[]): Product price.
item.image_url optional
(string): Product image.
item.compare_at optional
(number): Product old price.
item.currency optional
(string): Product price currency.
item.reviews optional
(reviews)*: Reviews score value and total reviews count.

config.columns optional (string): Number of columns in a row.
config.product.currency optional (string): Product price currency.
config.product.title.lines optional (number): Maximum lines in title.
config.product.title.display optional (boolean): Defines, should title be displayed or not.
config.product.description.lines optional (number): Maximum lines in description.
config.product.description.display optional (boolean): Defines, should description be displayed or not.

Examples of usage:

<ProductsGrid
    title="Customers who viewed this also viewed"
    items={[
        {
            title: "Digital Ripped camo charcoal Quick-Dry Jersey",
            description: "Quick-Dry Mesh breathable fabric 100% polyester Machine wash Imported",
            price: [
              15
            ],
            image_url: "https://test.com/image.png",
            product_url: "http://test.com/product-url",
            reviews: {
              average_score: 5,
              total_reviews: 1
            },
            compare_at: 25,
            currency: "USD" 
        }
        // other items objects
    ]}
/>
Suggest Edits

UIComponents.FacetsList

 

FacetsLayout component. Renders whole layout of facets view.

Arguments:

facets required (object[]): Search API facets data.
isMobile optional (boolean): Renders mobile view if this variable set to true.
onChange optional (function): Callback function, which called everytime user changes any facet.
config required (config): Config object.

Types:

config.range.currency required (string): Currency in range facet.
config.range.i18n.submit optional (string): Submit button translation in range facet. Default - "Go".

config.category.i18n.goBackTitle optional (string): "Go back" title, displayed when user was opened 2nd menu level in category facet.
config.category.i18n.more optional (string): "Show more" button title, displayed in a collapsed view in category facet.
config.category.i18n.less optional (string): "Show less" button title, displayed in a expanded view in category facet.
config.category.maxItemsCount optional (number): Maximum rows length in a collapsed view in category facet.
config.category.rowHeight optional (number): Height of row node in category facet.

config.checkbox.i18n.search optional (string): "Search" input placeholder title in checkbox facet.
config.checkbox.i18n.more optional (string): "Show more" button title, displayed in a collapsed view in checkbox facet.
config.checkbox.i18n.less optional (string): "Show less" button title, displayed in a expanded view in checkbox facet.
config.checkbox.maxItemsCount optional (number): Maximum rows length in a collapsed view in checkbox facet.
config.checkbox.rowHeight optional (number): Height of row node in checkbox facet.

config.types optional (object): Mappings object, where key is facet name, value is facet type.
config.labels optional (object): Mappings object, where key is facet name, value is facet label.
config.i18n.showResults optional (string): Button text translation, which closes facets sidebar in mobile view, when user selected some facets.
config.i18n.hideFilters optional (string): Button text translation, which closes facets sidebar in mobile view.
config.i18n.backToFilters optional (string): Button text translation, which returns user back to facets list mobile view.
config.i18n.ok optional (string): Button text translation, which applies selected facets changes.

Examples of usage:

<FacetsLayout
    facets={searchApiResponse.facets}
    isMobile={true}
    config={{
        range: {
          currency: 'USD',
          i18n: {
            submit: 'Apply'
          }
        },

        category: {
          maxItemsCount: 3,
          rowHeight: 20,
          i18n: {
            goBackTitle: 'All categories',
            more: 'Show more',
            less: 'Less',
          }
        },

        checkbox: {
          maxItemsCount: 3,
          rowHeight: 20,
          i18n: {
            search: 'All categories',
            more: 'Show more',
            less: 'Less',
          }
        },

        types: {
          'custom_fields.manufacturer': 'color',
        },

        labels: {
          'category': 'Hund',
          'custom_fields.manufacturer': 'Manufacturer',
          'price': 'Price',
          'custom_fields.hundkategori': 'Hundkategori',
          'custom_fields.livsstadium': 'Livsstadium',
          'custom_fields.rasstorlekarflerval': 'Rasstorlekarflerval',
          'custom_fields.standardnetto': 'Standardnetto',
          'custom_fields.tuggbenmaterial': 'Tuggbenmaterial',
          'custom_fields.leksaksort': 'Leksaksort',
          'custom_fields.konsistens': 'Konsistens',
          'custom_fields.leksakstorlek': 'Leksakstorlek',
          'custom_fields.matplats_storlek': 'Matplats Storlek',
          'custom_fields.koppelmaterial': 'Koppelmaterial',
          'custom_fields.tuggtyp': 'Tuggtyp',
        },
      
        i18n: {
          showResults: 'Show results',
          hideFilters: 'Hide filters',
          backToFilters: 'Back to filters',
          ok: 'Apply',
        }
    }}
/>
Suggest Edits

UIComponents.ProductsList

 

ProductsLayout component. Renders whole layout of products view.

Arguments:

items required (object[]): Search API items data.
isMobile optional (boolean): Renders mobile view if this variable set to true.
config optional (config): Config object.

Types

config.product.currency optional (string): Product price currency.
config.product.title.lines optional (number): Maximum lines in title.
config.product.title.display optional (boolean): Defines, should title be displayed or not.
config.product.description.lines optional (number): Maximum lines in description.
config.product.description.display optional (boolean): Defines, should description be displayed or not.

config.productsGrid.columns optional (number): Number of columns in a row.

Examples of usage:

<ProductsLayout
    items={searchApiResponse.items}
    isMobile={true}
/>
Suggest Edits

Introduction

This is a PHP SDK for our JSON API

 

Requirements

PHP 5.4.0 and later

Installation & Usage

Composer

To install the bindings via Composer, add the following to composer.json:

{
  "require": {
    "findify/sdk": "1.*"
  }
}

Then run composer install

Manual Installation

Download the files and include autoload.php:

require_once('/path-to-findify-sdk/autoload.php');

Getting Started

Authentication

Please check Authentication to get the API key

Requesting the API

Please follow the installation procedure and then run the following:

<?php
require_once(__DIR__ . '/vendor/autoload.php');

// Configure API key authorization: key
Swagger\Client\Configuration::getDefaultConfiguration()->setApiKey('X-Key', 'YOUR_API_KEY');

$api_instance = new Swagger\Client\Api\DefaultApi();
$autocomplete = new \Swagger\Client\Model\AutocompleteRequest(); // \Swagger\Client\Model\AutocompleteRequest | Request parameters for autocomplete

try {
    $result = $api_instance->autocompletePost($autocomplete);
    print_r($result);
} catch (Exception $e) {
    echo 'Exception when calling DefaultApi->autocompletePost: ', $e->getMessage(), PHP_EOL;
}

?>