API Documentation

In-depth reference documentation for iQmetrix API's.

NAV

OVERVIEW

Suppliers have the ability to add products to their subscribable lists and retrieve a list of companies from a subscription.

Suppliers can also create their own subscribable lists and add/remove companies from their lists, or have iQmetrix handle these scenarios. When creating a subscribable list, you must specify the GUID (e.g. Online GUID Generator).

ENDPOINTS

Sandbox: https://productsubscriptionsdemo.iqmetrix.net/v1
Production: https://productsubscriptions.iqmetrix.net/v1

RESOURCES

Subscription

[
    {
        "Companies": [
            {
                "DateSubscribedUtc": "2015-09-23T23:48:37.744Z",
                "Id": 146454,
                "Name": "Kentel Corp"
            }
        ],
        "ListId": "43d92a51-650e-4b85-b5d0-8d51bf4c59f4"
    }
]
Name Description
Companies (Array[Company]) Companies for the subscription
ListId (GUID) Subscription identifier

Company

{
    "DateSubscribedUtc": "2015-09-23T23:48:37.744Z",
    "Id": 146454,
    "Name": "Kentel Corp"
}
Name Description  
DateSubscribedUtc (DateTime) Date company subscribed to product subscription, in UTC  
Id (Integer) Company identifier  
Name (String) Company Name  
ProductExclusionResources (Array[object]) Reserved for internal use  

SubscribableList

{
    "EntityId": 14107,
    "Id": "43d92a51-650e-4b85-b5d0-8d51bf4c59f4",
    "Name": "Nozama's Product List",
    "Dropshippable": true,
    "Products": [
        {
            "Price": 24.99,
            "ProductName": "Samsung Galaxy S4 Standard Battery",
            "VendorSku": "B00LAOKN4S",
            "Version": 2
        }
    ],
    "Version": 2,
    "CountOfProducts": 1
}
Name Description  
EntityId (Integer) Supplier identifier  
Id (GUID) Subscribable List identifer  
Name (String) Title of product subscription  
Dropshippable (Boolean) Indicates if products in list are dropshippable. Defaults to false  
Products (Array[Product]) Products for the subscribable list  
Version (Integer) Subscription revision  
CountOfProducts (Integer) Number of Products in the List  
MasterEntityId (Integer) Reserved for internal use  

Product

{
    "Price": 24.99,
    "ProductName": "Samsung Galaxy S4 Standard Battery",
    "VendorSku": "B00LAOKN4S",
    "Version": 2
}
Name Description  
Price (Decimal) Product MSRP. Currency code defaults internally to retailer location.  
ProductName (String) Name of product  
VendorSku (String) Vendor product SKU  
Version (Integer) Product revision  
Dropshippable (Boolean) Reserved for internal use  

REQUESTS

GET All Companies in a Product Subscription

Request

GET /subscription({ListId})

Example Request

GET /subscription(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)
Authorization: Bearer (Access Token)
Accept: application/json

curl -X GET "https://productsubscriptionsdemo.iqmetrix.net/v1/subscription(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)" -H "Authorization: Bearer (Access Token)" -H "Accept: application/json"
static IRestResponse GettingAllCompaniesInAProductSubscription()
{
    var client = new RestClient("https://productsubscriptionsdemo.iqmetrix.net/v1/subscription(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)");
    var request = new RestRequest(Method.GET);
     
    request.AddHeader("Authorization", "Bearer (Access Token)"); 
    request.AddHeader("Accept", "application/json"); 

    

    return client.Execute(request);
}

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import java.io.IOException;

public static CloseableHttpResponse GettingAllCompaniesInAProductSubscription() throws IOException {
    CloseableHttpClient httpClient = HttpClients.createDefault();
    HttpGet request = new HttpGet("https://productsubscriptionsdemo.iqmetrix.net/v1/subscription(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)");
     
    request.addHeader("Authorization", "Bearer (Access Token)"); 
    request.addHeader("Accept", "application/json"); 
    
    return httpClient.execute(request);
}
require 'rest-client'



response = RestClient.get 'https://productsubscriptionsdemo.iqmetrix.net/v1/subscription(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)', {
     :'Authorization' => 'Bearer (Access Token)',
     :'Accept' => 'application/json',
    } 

puts response

URI Parameters

Response Parameters

Example Response

HTTP 200 Content-Type: application/json
{
  "ListId": "43d92a51-650e-4b85-b5d0-8d51bf4c59f4",
  "Companies": [
      {
        "Id": 14146,
        "Name": "KENTEL Corp",
        "DateSubscribedUtc": "2015-11-23T19:12:09.92Z"
      },
    ...  
  ]
}

Array[Subscription]

Create a Subscribable List

Allows you to create your own subscribable list. You must provide a GUID for the SubscribableListId. The naming convention for subscribable lists is in the format “Vendor Name - Product List Name”. For example, Supplier123 - Otterbox Products.

Request

PUT /subscribablelists({ListId})

Example Request

PUT /subscribablelists(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)
Authorization: Bearer (Access Token)
Accept: application/json
Content-Type: application/json

{
    "EntityId": 14107,
    "Name": "Test List Name",
    "Dropshippable": true
}

curl -X PUT "https://productsubscriptionsdemo.iqmetrix.net/v1/subscribablelists(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)" -H "Authorization: Bearer (Access Token)" -H "Accept: application/json" -H "Content-Type: application/json" -d '{
    "EntityId": 14107,
    "Name": "Test List Name",
    "Dropshippable": true
}
'
static IRestResponse CreateASubscribableList()
{
    var client = new RestClient("https://productsubscriptionsdemo.iqmetrix.net/v1/subscribablelists(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)");
    var request = new RestRequest(Method.PUT);
     
    request.AddHeader("Authorization", "Bearer (Access Token)"); 
    request.AddHeader("Accept", "application/json"); 
    request.AddHeader("Content-Type", "application/json"); 

     request.AddParameter("application/json", "{\"EntityId\":14107,\"Name\":\"Test List Name\",\"Dropshippable\":true}", ParameterType.RequestBody);

    return client.Execute(request);
}
import org.apache.http.entity.StringEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import java.io.IOException;

public static CloseableHttpResponse CreateASubscribableList() throws IOException {
    CloseableHttpClient httpClient = HttpClients.createDefault();
    HttpPut request = new HttpPut("https://productsubscriptionsdemo.iqmetrix.net/v1/subscribablelists(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)");
     
    request.addHeader("Authorization", "Bearer (Access Token)"); 
    request.addHeader("Accept", "application/json"); 
    request.addHeader("Content-Type", "application/json"); 
    StringEntity body = new StringEntity("{\"EntityId\":14107,\"Name\":\"Test List Name\",\"Dropshippable\":true}");
    request.setEntity(body);
    
    return httpClient.execute(request);
}
require 'rest-client'

body = "{\"EntityId\":14107,\"Name\":\"Test List Name\",\"Dropshippable\":true}

response = RestClient.put 'https://productsubscriptionsdemo.iqmetrix.net/v1/subscribablelists(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)', body, {
     :'Authorization' => 'Bearer (Access Token)',
     :'Accept' => 'application/json',
     :'Content-Type' => 'application/json',
    } 

puts response

URI Parameters

Request Parameters

Response Parameters

Example Response

HTTP 200 Content-Type: application/json
{
    "Id": "43d92a51-650e-4b85-b5d0-8d51bf4c59f4",
    "EntityId": 14107,
    "Name": "Nozama - Samsung Products",
    "Dropshippable": true,
    "Products": [],
    "Version": 2
}

SubscribableList

GET a Subscribable List

Request

GET /subscribablelists({SubscribableListId})

Example Request

GET /subscribablelists(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)
Authorization: Bearer (Access Token)
Accept: application/json

curl -X GET "https://productsubscriptionsdemo.iqmetrix.net/v1/subscribablelists(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)" -H "Authorization: Bearer (Access Token)" -H "Accept: application/json"
static IRestResponse GettingASubscribableList()
{
    var client = new RestClient("https://productsubscriptionsdemo.iqmetrix.net/v1/subscribablelists(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)");
    var request = new RestRequest(Method.GET);
     
    request.AddHeader("Authorization", "Bearer (Access Token)"); 
    request.AddHeader("Accept", "application/json"); 

    

    return client.Execute(request);
}

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import java.io.IOException;

public static CloseableHttpResponse GettingASubscribableList() throws IOException {
    CloseableHttpClient httpClient = HttpClients.createDefault();
    HttpGet request = new HttpGet("https://productsubscriptionsdemo.iqmetrix.net/v1/subscribablelists(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)");
     
    request.addHeader("Authorization", "Bearer (Access Token)"); 
    request.addHeader("Accept", "application/json"); 
    
    return httpClient.execute(request);
}
require 'rest-client'



response = RestClient.get 'https://productsubscriptionsdemo.iqmetrix.net/v1/subscribablelists(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)', {
     :'Authorization' => 'Bearer (Access Token)',
     :'Accept' => 'application/json',
    } 

puts response

URI Parameters

Response Parameters

Example Response

HTTP 200 Content-Type: application/json
{
    "EntityId": 14107,
    "Id": "43d92a51-650e-4b85-b5d0-8d51bf4c59f4",
    "Name": "Nozama's Product List",
    "Dropshippable": true,
    "Products": [
        {
            "Price": 24.99,
            "ProductName": "Samsung Galaxy S4 Standard Battery",
            "VendorSku": "B00LAOKN4S",
            "Version": 2
        }
    ],
    "Version": 2,
    "CountOfProducts": 1
}

SubscribableList

PUT Products in a Subscribable List

The new product list in the payload replaces the old product list. Any matching old products (determined by vendor sku) will have their slug and version data copied over into the new products.

Request

PUT /subscribablelists({SubscribableListId})

Example Request

PUT /subscribablelists(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)
Authorization: Bearer (Access Token)
Accept: application/json
Content-Type: application/json

{
   "EntityId": 14107,
   "Name": "Nozama's Product List",
   "Dropshippable": true,            
   "Products": [
       {
           "ProductName": "Samsung Galaxy S4 Standard Battery",
           "VendorSku": "B00LAOKN4S",
           "Price": 24.99
       }
   ]          
}

curl -X PUT "https://productsubscriptionsdemo.iqmetrix.net/v1/subscribablelists(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)" -H "Authorization: Bearer (Access Token)" -H "Accept: application/json" -H "Content-Type: application/json" -d '{
   "EntityId": 14107,
   "Name": "Nozama's Product List",
   "Dropshippable": true,            
   "Products": [
       {
           "ProductName": "Samsung Galaxy S4 Standard Battery",
           "VendorSku": "B00LAOKN4S",
           "Price": 24.99
       }
   ]          
}
'
static IRestResponse UpdatingProductsInASubscribableList()
{
    var client = new RestClient("https://productsubscriptionsdemo.iqmetrix.net/v1/subscribablelists(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)");
    var request = new RestRequest(Method.PUT);
     
    request.AddHeader("Authorization", "Bearer (Access Token)"); 
    request.AddHeader("Accept", "application/json"); 
    request.AddHeader("Content-Type", "application/json"); 

     request.AddParameter("application/json", "{\"EntityId\":14107,\"Name\":\"Nozama's Product List\",\"Dropshippable\":true,\"Products\":[{\"ProductName\":\"Samsung Galaxy S4 Standard Battery\",\"VendorSku\":\"B00LAOKN4S\",\"Price\":24.99}]}", ParameterType.RequestBody);

    return client.Execute(request);
}
import org.apache.http.entity.StringEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import java.io.IOException;

public static CloseableHttpResponse UpdatingProductsInASubscribableList() throws IOException {
    CloseableHttpClient httpClient = HttpClients.createDefault();
    HttpPut request = new HttpPut("https://productsubscriptionsdemo.iqmetrix.net/v1/subscribablelists(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)");
     
    request.addHeader("Authorization", "Bearer (Access Token)"); 
    request.addHeader("Accept", "application/json"); 
    request.addHeader("Content-Type", "application/json"); 
    StringEntity body = new StringEntity("{\"EntityId\":14107,\"Name\":\"Nozama's Product List\",\"Dropshippable\":true,\"Products\":[{\"ProductName\":\"Samsung Galaxy S4 Standard Battery\",\"VendorSku\":\"B00LAOKN4S\",\"Price\":24.99}]}");
    request.setEntity(body);
    
    return httpClient.execute(request);
}
require 'rest-client'

body = "{\"EntityId\":14107,\"Name\":\"Nozama's Product List\",\"Dropshippable\":true,\"Products\":[{\"ProductName\":\"Samsung Galaxy S4 Standard Battery\",\"VendorSku\":\"B00LAOKN4S\",\"Price\":24.99}]}

response = RestClient.put 'https://productsubscriptionsdemo.iqmetrix.net/v1/subscribablelists(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)', body, {
     :'Authorization' => 'Bearer (Access Token)',
     :'Accept' => 'application/json',
     :'Content-Type' => 'application/json',
    } 

puts response

URI Parameters

Request Parameters

Response Parameters

Example Response

HTTP 200 Content-Type: application/json
{
    "Id": "43d92a51-650e-4b85-b5d0-8d51bf4c59f4",
    "EntityId": 41407,
    "Name": "Nozama's Product List",
    "Dropshippable": true,
    "Products": [
        {
            "ProductName": "Samsung Galaxy S4 Standard Battery",
            "VendorSku": "B00LAOKN4S",
            "Price": 24.99,
            "Version": 1
        }
    ],
    "Version": 2
}

SubscribableList

PUT a Company to a Subscribable List

Request

PUT /subscription({ListId})/company({CompanyId})

Example Request

PUT /subscription(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)/company(14146)
Authorization: Bearer (Access Token)
Accept: application/json
Content-Type: application/json

curl -X PUT "https://productsubscriptionsdemo.iqmetrix.net/v1/subscription(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)/company(14146)" -H "Authorization: Bearer (Access Token)" -H "Accept: application/json" -H "Content-Type: application/json"
static IRestResponse UpdatingACompanyToASubscribableList()
{
    var client = new RestClient("https://productsubscriptionsdemo.iqmetrix.net/v1/subscription(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)/company(14146)");
    var request = new RestRequest(Method.PUT);
     
    request.AddHeader("Authorization", "Bearer (Access Token)"); 
    request.AddHeader("Accept", "application/json"); 
    request.AddHeader("Content-Type", "application/json"); 

    

    return client.Execute(request);
}
import org.apache.http.entity.StringEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPut;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import java.io.IOException;

public static CloseableHttpResponse UpdatingACompanyToASubscribableList() throws IOException {
    CloseableHttpClient httpClient = HttpClients.createDefault();
    HttpPut request = new HttpPut("https://productsubscriptionsdemo.iqmetrix.net/v1/subscription(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)/company(14146)");
     
    request.addHeader("Authorization", "Bearer (Access Token)"); 
    request.addHeader("Accept", "application/json"); 
    request.addHeader("Content-Type", "application/json"); 
    
    return httpClient.execute(request);
}
require 'rest-client'



response = RestClient.put 'https://productsubscriptionsdemo.iqmetrix.net/v1/subscription(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)/company(14146)', body, {
     :'Authorization' => 'Bearer (Access Token)',
     :'Accept' => 'application/json',
     :'Content-Type' => 'application/json',
    } 

puts response

URI Parameters

Response Parameters

Example Response

HTTP 204 Content-Type: application/json

DELETE a Company from a Subscribable List

Request

DELETE /subscription({ListId})/company({CompanyId})

Example Request

DELETE /subscription(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)/company(14146)
Authorization: Bearer (Access Token)

curl -X DELETE "https://productsubscriptionsdemo.iqmetrix.net/v1/subscription(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)/company(14146)" -H "Authorization: Bearer (Access Token)"
static IRestResponse DeletingACompanyFromASubscribableList()
{
    var client = new RestClient("https://productsubscriptionsdemo.iqmetrix.net/v1/subscription(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)/company(14146)");
    var request = new RestRequest(Method.DELETE);
     
    request.AddHeader("Authorization", "Bearer (Access Token)"); 

    

    return client.Execute(request);
}

import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpDelete;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import java.io.IOException;

public static CloseableHttpResponse DeletingACompanyFromASubscribableList() throws IOException {
    CloseableHttpClient httpClient = HttpClients.createDefault();
    HttpDelete request = new HttpDelete("https://productsubscriptionsdemo.iqmetrix.net/v1/subscription(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)/company(14146)");
     
    request.addHeader("Authorization", "Bearer (Access Token)"); 
    
    return httpClient.execute(request);
}
require 'rest-client'



response = RestClient.delete 'https://productsubscriptionsdemo.iqmetrix.net/v1/subscription(43d92a51-650e-4b85-b5d0-8d51bf4c59f4)/company(14146)', {
     :'Authorization' => 'Bearer (Access Token)',
    } 

puts response

URI Parameters

Response Parameters

Example Response

HTTP 204 Content-Type: application/json

FAQ

How do I create more than one subscribable list?

See Creating a Subscribable List to create a subscribable list.

What is the difference between a Product Feed and a Subscription List?

A Product Feed involves a relationship between a supplier and iQmetrix. A supplier provides iQmetrix with product details which are curated into products within Product Library.

A Product Subscription involves a relationship between a supplier and a retailer. A supplier provides a list a retailer can “subscribe” to in order to get the latest products available for dropship.

How are companies linked to subscribable lists?

Each company is assigned to one or more subscribable lists. The products contained in each list are visible to the assigned companies.

Optionally, you can provide more than one list to serve different groups of products to different retailers, such as based on the manufacturer or product line.

For example, companies that belong to Dan's Supplies - Apple would only see Apple products from that list. See Product Subscription for more info.

How do I remove a product from my subscribable list?

You have the ability to add and remove products from each of your subscribable lists when performing an update to the list.

Each push you make overwrites the previous collection of products viewed by iQmetrix.

See Updating Products in a Subscribable List for more info.

ERRORS

Error Code Message How to Resolve
HTTP 400 Validation failed. EntityId does not belong to vendor Occurs when entering an incorrect EntityId
HTTP 400 <Field> should not be empty Occurs if Required Parameter is missing
HTTP 404 Document not found Occurs when entering an incorrect ID in the uri
Was this page helpful?