Inventory API Sandbox

Using our developer’s site as a point of entry, our Inventory API allows Ve clients to upload their entire collection of products to our database. This gives our clients full reign over which products can be pulled into product feeds and recommended products within VePanel. The API can be called at any time giving clients the flexibility to add, update, promote and blacklist products from the database at any point.


About the Inventory API

Upon logging into the VeLabs site clients will be able to access the end point, giving them the ability to send products to the Inventory API, at which point the product feeds must be uploaded. The associated customer identification and journey code will then be called internally, allowing the Inventory API with the correct parameters and feeds to be selected.

Ve’s Inventory API can be called at any time giving clients the flexibility to add, update, delete, promote and blacklist products from the database at any point.


The Sandbox Tier

Every API call must be authorized using an API key. While you are testing the Inventory API, you should use the sandbox and generate your keys from there. You will be working against our Production Environment, but all the data generated will be marked as test data. With this approach we make sure that you can play as much as you want with the API and, at the same time, we keep the consistency in our DBs. So that when you decide to go live, we'll enable you the Customer Tier to work with our production environment and level up the throttling limits.

The Sandbox Tier includes the following limits:

  • Request size limits: 0.5kb (double than the average request).
  • Requests per minute: 10(triple than the max. peak of 200 installations per hour found in our metrics).


For subscribing to the Customer Tier, click here.


DeactivateAll

The deactivate endpoint will mark as deleted all your inventory in our data bases, so that it won't appear for recommendations. In case you want to reactivate any product, you can use the add endpoint.

Try it

Request URL

Request parameters

(optional)
string
(optional)
boolean

Request headers

string
Subscription key which provides access to this API. Found in your Profile.

Request body

Response 200

Products deactivated successfully.

{
  "message": "The operation is being processed."
}

Response 401

You are unauthorised for this method.

Response 500

Internal server error.

{
   "message" : "Sorry, we've encountered some issues while processing your request. Support reference ID: V-xxxxxxxx-xx"
}

Code samples

@ECHO OFF

curl -v -X DELETE "https://api.veinteractive.com/InventoryApiSandbox/DeactivateAll?domain={string}&forceUpdate={boolean}"
-H "Ocp-Apim-Subscription-Key: {subscription key}"

--data-ascii "{body}" 
using System;
using System.Net.Http.Headers;
using System.Text;
using System.Net.Http;
using System.Web;

namespace CSHttpClientSample
{
    static class Program
    {
        static void Main()
        {
            MakeRequest();
            Console.WriteLine("Hit ENTER to exit...");
            Console.ReadLine();
        }
        
        static async void MakeRequest()
        {
            var client = new HttpClient();
            var queryString = HttpUtility.ParseQueryString(string.Empty);

            // Request headers
            client.DefaultRequestHeaders.Add("Ocp-Apim-Subscription-Key", "{subscription key}");

            // Request parameters
            queryString["domain"] = "{string}";
            queryString["forceUpdate"] = "{boolean}";
            var uri = "https://api.veinteractive.com/InventoryApiSandbox/DeactivateAll?" + queryString;

            var response = await client.DeleteAsync(uri);
        }
    }
}	
// // This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
import java.net.URI;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class JavaSample 
{
    public static void main(String[] args) 
    {
        HttpClient httpclient = HttpClients.createDefault();

        try
        {
            URIBuilder builder = new URIBuilder("https://api.veinteractive.com/InventoryApiSandbox/DeactivateAll");

            builder.setParameter("domain", "{string}");
            builder.setParameter("forceUpdate", "{boolean}");

            URI uri = builder.build();
            HttpDelete request = new HttpDelete(uri);
            request.setHeader("Ocp-Apim-Subscription-Key", "{subscription key}");


            // Request body
            StringEntity reqEntity = new StringEntity("{body}");
            request.setEntity(reqEntity);

            HttpResponse response = httpclient.execute(request);
            HttpEntity entity = response.getEntity();

            if (entity != null) 
            {
                System.out.println(EntityUtils.toString(entity));
            }
        }
        catch (Exception e)
        {
            System.out.println(e.getMessage());
        }
    }
}

<!DOCTYPE html>
<html>
<head>
    <title>JSSample</title>
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
</head>
<body>

<script type="text/javascript">
    $(function() {
        var params = {
            // Request parameters
            "domain": "{string}",
            "forceUpdate": "{boolean}",
        };
      
        $.ajax({
            url: "https://api.veinteractive.com/InventoryApiSandbox/DeactivateAll?" + $.param(params),
            beforeSend: function(xhrObj){
                // Request headers
                xhrObj.setRequestHeader("Ocp-Apim-Subscription-Key","{subscription key}");
            },
            type: "DELETE",
            // Request body
            data: "{body}",
        })
        .done(function(data) {
            alert("success");
        })
        .fail(function() {
            alert("error");
        });
    });
</script>
</body>
</html>
#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    
    NSString* path = @"https://api.veinteractive.com/InventoryApiSandbox/DeactivateAll";
    NSArray* array = @[
                         // Request parameters
                         @"entities=true",
                         @"domain={string}",
                         @"forceUpdate={boolean}",
                      ];
    
    NSString* string = [array componentsJoinedByString:@"&"];
    path = [path stringByAppendingFormat:@"?%@", string];

    NSLog(@"%@", path);

    NSMutableURLRequest* _request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:path]];
    [_request setHTTPMethod:@"DELETE"];
    // Request headers
    [_request setValue:@"{subscription key}" forHTTPHeaderField:@"Ocp-Apim-Subscription-Key"];
    // Request body
    [_request setHTTPBody:[@"{body}" dataUsingEncoding:NSUTF8StringEncoding]];
    
    NSURLResponse *response = nil;
    NSError *error = nil;
    NSData* _connectionData = [NSURLConnection sendSynchronousRequest:_request returningResponse:&response error:&error];

    if (nil != error)
    {
        NSLog(@"Error: %@", error);
    }
    else
    {
        NSError* error = nil;
        NSMutableDictionary* json = nil;
        NSString* dataString = [[NSString alloc] initWithData:_connectionData encoding:NSUTF8StringEncoding];
        NSLog(@"%@", dataString);
        
        if (nil != _connectionData)
        {
            json = [NSJSONSerialization JSONObjectWithData:_connectionData options:NSJSONReadingMutableContainers error:&error];
        }
        
        if (error || !json)
        {
            NSLog(@"Could not parse loaded json with error:%@", error);
        }
        
        NSLog(@"%@", json);
        _connectionData = nil;
    }
    
    [pool drain];

    return 0;
}
<?php
// This sample uses the Apache HTTP client from HTTP Components (http://hc.apache.org/httpcomponents-client-ga/)
require_once 'HTTP/Request2.php';

$request = new Http_Request2('https://api.veinteractive.com/InventoryApiSandbox/DeactivateAll');
$url = $request->getUrl();

$headers = array(
    // Request headers
    'Ocp-Apim-Subscription-Key' => '{subscription key}',
);

$request->setHeader($headers);

$parameters = array(
    // Request parameters
    'domain' => '{string}',
    'forceUpdate' => '{boolean}',
);

$url->setQueryVariables($parameters);

$request->setMethod(HTTP_Request2::METHOD_DELETE);

// Request body
$request->setBody("{body}");

try
{
    $response = $request->send();
    echo $response->getBody();
}
catch (HttpException $ex)
{
    echo $ex;
}

?>
########### Python 2.7 #############
import httplib, urllib, base64

headers = {
    # Request headers
    'Ocp-Apim-Subscription-Key': '{subscription key}',
}

params = urllib.urlencode({
    # Request parameters
    'domain': '{string}',
    'forceUpdate': '{boolean}',
})

try:
    conn = httplib.HTTPSConnection('api.veinteractive.com')
    conn.request("DELETE", "/InventoryApiSandbox/DeactivateAll?%s" % params, "{body}", headers)
    response = conn.getresponse()
    data = response.read()
    print(data)
    conn.close()
except Exception as e:
    print("[Errno {0}] {1}".format(e.errno, e.strerror))

####################################

########### Python 3.2 #############
import http.client, urllib.request, urllib.parse, urllib.error, base64

headers = {
    # Request headers
    'Ocp-Apim-Subscription-Key': '{subscription key}',
}

params = urllib.parse.urlencode({
    # Request parameters
    'domain': '{string}',
    'forceUpdate': '{boolean}',
})

try:
    conn = http.client.HTTPSConnection('api.veinteractive.com')
    conn.request("DELETE", "/InventoryApiSandbox/DeactivateAll?%s" % params, "{body}", headers)
    response = conn.getresponse()
    data = response.read()
    print(data)
    conn.close()
except Exception as e:
    print("[Errno {0}] {1}".format(e.errno, e.strerror))

####################################
require 'net/http'

uri = URI('https://api.veinteractive.com/InventoryApiSandbox/DeactivateAll')

query = URI.encode_www_form({
    # Request parameters
    'domain' => '{string}',
    'forceUpdate' => '{boolean}'
})

if uri.query && uri.query.length > 0
    uri.query += '&' + query
else
    uri.query = query
end

request = Net::HTTP::Delete.new(uri.request_uri)
# Request headers
request['Ocp-Apim-Subscription-Key'] = '{subscription key}'
# Request body
request.body = "{body}"

response = Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http|
    http.request(request)
end

puts response.body