Overview

This guide is intended to demonstrate the steps required to use iQmetrix APIs enable Dropship in a 3rd Party eCommerce solution.

What is Dropship?

Dropship is a retailer practice of sending items from a manufacturer or supplier directly to a customer.

With iQmetrix Dropship, you can showcase and sell a wide variety of unique, luxury or specialized items without having to invest in physical inventory.

Postman

iQmetrix uses Postman when testing and debugging our APIs.

Click the button below to import the collection directly into Postman.

Prerequisites

To use this guide, the following steps must be completed:

Before You Begin

To make requests to iQmetrix APIs, you must first generate an Access Token using the access credentials from your onboarding package.

For more information on authentication and how to generate an access token, see Authenticating with iQmetrix APIs.

Steps

Step 1 - Get a list of Products

You can display a list of Dropship enabled products to the customer with the request Get Catalog Items by Subscription List and the following parameters:

From the response, the following values will be used in later steps:

Example Request

GET https://catalogsrc.iqmetrix.net/v1/Companies(14146)/Catalog/Items(SourceId="43d92a51-650e-4b85-b5d0-8d51bf4c59f4")
Authorization: Bearer b0k0dY70N3Vv9jR1b9oEdW9IeT5WIn85WCYFJRo6AiIKLEMBFwNbEQsfeCUeM3gdPA1gAAVxWTJacX8mJyBaGRcFVwQOEV49NgBz
Accept: application/json

Example Response

HTTP 200 Content-Type: application/json
{
    "Items": [
        {
            "CatalogItemId": "a183f1a9-c58f-426a-930a-9a6357db52ed",
            "CatalogSku": "21Z8F4AQ",
            "DateAddedUtc": "2016-08-09T20:12:05.987",
            "DateUpdatedUtc": "2016-08-09T20:12:05.99",
            "IsArchived": false,
            "RmsId": "1",
            "Slug": "M1248-V1",
            "SourceIds": [
                "43d92a51-650e-4b85-b5d0-8d51bf4c59f4"
            ],
            "MeasurementType": "SingleUnit",
            "BatchTracking": false,
            "NonStock": false,
            "LifeCycle": "Active"        
        }
    ]
}

(Optional) Step 2 - Get Product Details

You can display rich product content to the customer with the request Get Product Details for a Catalog Item and the following parameters:

This request returns product information like:

Example Request

GET https://catalogsrc.iqmetrix.net/v1/Companies(14146)/Catalog/Items(a183f1a9-c58f-426a-930a-9a6357db52ed)/ProductDetails
Authorization: Bearer b0k0dY70N3Vv9jR1b9oEdW9IeT5WIn85WCYFJRo6AiIKLEMBFwNbEQsfeCUeM3gdPA1gAAVxWTJacX8mJyBaGRcFVwQOEV49NgBz
Accept: application/json

Example Response

HTTP 200 Content-Type: application/json
{
    "ExtendedAttributes": [
        {
            "Name": "Country of Manufacture",
            "Value": "China"
        }
    ],
    "DateAddedUtc": "2017-10-18T21:42:26.393Z",
    "DateUpdatedUtc": "2020-01-08T17:22:32.017Z",
    "RmsId": "2314",
    "MeasurementType": "SingleUnit",
    "BatchTracking": false,
    "NonStock": false,
    "LifeCycle": "Active",
    "Id": "M15-V2-E21090",
    "Name": "Defender Case",
    "MasterProductId": 15,
    "VariationId": 2,
    "Owner": {
        "Id": 14146,
        "Name": "Kentel"
    },
    "CanonicalClassification": {
        "TreeId": 1,
        "Id": 40,
        "Name": "Cases & Skins",
        "ParentCategories": [
            {
                "Id": 12,
                "Name": "Accessories"
            },
            {
                "Id": 37,
                "Name": "Cases & Protection"
            }
        ]
    },
    "ShortDescription": "",
    "LongDescription": "A premium mobile device.",
    "Manufacturer": null,
    "MSRP": {
        "Amount": 24.99,
        "CurrencyCode": "USD"
    },
    "ReleaseDate": null,
    "VariationInfo": [],
    "Specifications": [],
    "Assets": [
        {
            "Id": "e559612a-bdba-4525-ab41-2aea8665b700",
            "Name": "max-4HD.png",
            "Uri": "https://ams.iqmetrix.net/images/e559612a-bdba-4525-ab41-2aea8665b700",
            "Type": "Image",
            "IsHidden": false,
            "IsRolledUp": false
        }
    ],
    "ColorDefinition": {
        "Id": "46766447-efcd-48e8-ae29-5455abe11210",
        "Name": "Blazed",
        "ColorTagIds": [],
        "ColorTags": [],
        "Swatch": null,
        "IsUsed": true
    },
    "HeroShotUri": "https://ams.iqmetrix.net/images/e559612a-bdba-4525-ab41-2aea8665b700",
    "HeroShotId": "e559612a-bdba-4525-ab41-2aea8665b700",
    "ManufacturerSkus": [
        {
            "Value": "77-43623",
            "Description": "",
            "Entity": null
        }
    ],
    "VendorSkus": [],
    "UpcCodes": [],
    "Region": null,
    "Entity": {
        "Id": 14146,
        "Name": "Kentel"
    },
    "HasColor": true,
    "IsLinkedToCuratedProduct": true,
    "IsSaleable": true,
    "IsArchived": false,
    "Version": 158
}

Step 3 - Get Pricing

You can display the price of a product using the request Get All Pricing Information Records for a Product and the following parameters:

From the response, the following values will be used in later steps:

Example Request

GET https://pricingrc.iqmetrix.net/v1/Companies(14146)/Entities(14146)/CatalogItems(a183f1a9-c58f-426a-930a-9a6357db52ed)/Pricing
Authorization: Bearer b0k0dY70N3Vv9jR1b9oEdW9IeT5WIn85WCYFJRo6AiIKLEMBFwNbEQsfeCUeM3gdPA1gAAVxWTJacX8mJyBaGRcFVwQOEV49NgBz
Accept: application/json

Example Response

HTTP 200 Content-Type: application/json
[
    {
        "Id": 10049448,
        "CompanyId": 14146,
        "EntityId": 14146,
        "CatalogItemId": "a183f1a9-c58f-426a-930a-9a6357db52ed",
        "PricingTermId": null,
        "RegularPrice": 10,
        "IsDiscountable": false,
        "FloorPrice": 3.99,
        "OriginalPrice": 3.99,
        "PricingTierId": null,
        "PricingGroupId": null,
        "PricingShelfId": null,
        "OverridePriceId": null,
        "OverridePrice": 4.99,
        "OverrideStartDateUtc": null,
        "OverrideStopDateUtc": null,
        "LastModifiedDateUtc": "2016-03-15T22:30:48.6633333"
    }
]    

Step 4 - Get Supplier Availability

To determine if a product is available from the supplier, you can use the request Get Supplier Availability and the following parameters:

From the response, the following values will be used in later steps:

Example Request

GET https://availabilityrc.iqmetrix.net/v1/Suppliers(14107)/Companies(14146)/SupplierSkus
Authorization: Bearer b0k0dY70N3Vv9jR1b9oEdW9IeT5WIn85WCYFJRo6AiIKLEMBFwNbEQsfeCUeM3gdPA1gAAVxWTJacX8mJyBaGRcFVwQOEV49NgBz
Accept: application/json

Example Response

HTTP 200 Content-Type: application/json
[
    {
        "Id": "c896e638-0268-4d2f-8764-0e7d315910e6",
        "SupplierSku": "802975856602",
        "SupplierEntityId": 14107,
        "IsAvailable": true,
        "Quantity": 94,
        "LastModifiedDateUtc": "2019-02-26T23:11:47.597"
    }
]

Step 5 - Create a Customer

To determine shipping, you must gather customer information using one of:

Your system should collect the data necessary to create a customer.

Tip: If you would like to map iQmetrix Customers to customers in a 3rd party system, contact your API Launch Specialist to have a CustomerExtension mapping resource created.

From the response, the following values will be used in later steps:

Example Request

POST https://crmrc.iqmetrix.net/v1/Companies(14146)/CustomerFull
Authorization: Bearer b0k0dY70N3Vv9jR1b9oEdW9IeT5WIn85WCYFJRo6AiIKLEMBFwNbEQsfeCUeM3gdPA1gAAVxWTJacX8mJyBaGRcFVwQOEV49NgBz                
Accept: application/json
Content: application/json
{
    "CustomerTypeId": 2,        
    "Addresses": [
        {
            "AddressTypeId": 3,
            "CountryCode": "US",
            "Locality": "Huntingtington Beach",
            "StateCode": "CA",
            "PostalCode": "90210",
            "StreetAddress1": "7158 Coastal St",
            "StreetAddress2": ""
        }
    ],
    "ContactMethods": [
        {
            "Value": "sample@hotmail.com",
            "ContactMethodCategory": "Email",
            "ContactMethodType": "Work"            
        },
        {
            "Value": "9999999999",
            "ContactMethodCategory": "Phone",
            "ContactMethodType": "Work"            
        }
    ]
}

Example Response

HTTP 201 Content-Type: application/json
{
    "Addresses": [
        {
            "Id": "659c2a38-d083-4421-9330-46d779702f85",
            "CustomerId": "5e534ed7-6c89-4f35-bc39-304783f56d1e",
            "AddressTypeId": 2,
            "AddressType": "Home",
            "Default": true,
            "DoNotContact": false,
            "CountryCode": "US",
            "Country": "United States",
            "Locality": "Huntington Beach",
            "StateCode": "CA",
            "State": "California",
            "PostalCode": "90210",
            "PostOfficeBoxNumber": "",
            "StreetAddress1": "7158 Coastal St",
            "StreetAddress2": "",
            "Notes": null,
            "Version": 1,
            "AttentionTo": null,
            "Phone": "",
            "Email": null
        }
    ],
    "ContactMethods": [
        {
            "Id": "cd1b475a-f89c-4829-ac6c-9f92210b20b8",
            "CustomerId": "5e534ed7-6c89-4f35-bc39-304783f56d1e",
            "Value": "sample@hotmail.com",
            "ContactMethodCategoryId": 2,
            "ContactMethodCategory": "Email",
            "ContactMethodTypeId": 10,
            "ContactMethodType": "Work Email",
            "DoNotContact": false,
            "Default": true,
            "Notes": null,
            "Version": 1
        },
        {
            "Id": "d703c338-df1a-417b-bb39-a2b9099123a5",
            "CustomerId": "5e534ed7-6c89-4f35-bc39-304783f56d1e",
            "Value": "9999999999",
            "ContactMethodCategoryId": 1,
            "ContactMethodCategory": "Phone",
            "ContactMethodTypeId": 3,
            "ContactMethodType": "Mobile",
            "DoNotContact": false,
            "Default": true,
            "Notes": null,
            "Version": 1          
        }
    ],
    "CustomerExtensions": [],
    "RelatedCustomers": [],
    "MemberOf": [],
    "Documents": [],
    "MergedCustomers": [],
    "PrimaryName": "Jane",
    "Title": "",
    "AlternateName": "",
    "MiddleName": "",
    "FamilyName": "Doe",
    "ReferralSource": "",
    "Notes": "",
    "UniqueIdentifier": "206B94B77E",
    "Id": "5e534ed7-6c89-4f35-bc39-304783f56d1e",
    "CustomerTypeId": 2,
    "CustomerType": "Person",
    "DateOfBirth": null,
    "PricingGroupId": null,
    "Disabled": false,
    "DoNotContact": false,
    "Version": 1,
    "MergedIntoCustomerId": null,
    "LastModifiedDateUtc": "2019-12-16T16:09:36.917"
}

Step 6 - Get Shipping Options

Ever iQmetrix Dropship orders requires a Shipping Option selected from a list provided by the associated supplier. In some cases, a supplier may choose to offer only one shipping option, but a list should still be presented to the customer as shipping options are dynamic and subject to change.

You can provide a list of shipping options for the customer tp choose from with the request Getting Shipping Options and the following parameters:

From the response, the following values will be used in later steps:

Example Request

POST https://shippingaggregatorrc.iqmetrix.net/Companies(14146)/ShippingInformation
Authorization: Bearer b0k0dY70N3Vv9jR1b9oEdW9IeT5WIn85WCYFJRo6AiIKLEMBFwNbEQsfeCUeM3gdPA1gAAVxWTJacX8mJyBaGRcFVwQOEV49NgBz        
Accept: application/json
Content: application/json
{
    "LocationEntityId": "14146",
    "PostalCode": "90210",
    "Items": [
        {
            "CatalogId": "a183f1a9-c58f-426a-930a-9a6357db52ed",
            "Quantity": 1
        }
    ]
}

Example Response

HTTP 202 Content-Type: application/json
{
    "Id": 1,
    "LocationEntityId": 14146,
    "PostalCode": "90210",
    "Shipments": [
        {
            "SupplierEntityId": 14107,
            "Items": [
                {
                    "CatalogId": "a183f1a9-c58f-426a-930a-9a6357db52ed",
                    "Quantity": 1,
                    "Cost": 9.99
                }
            ],
            "ShippingOptions": [
                {
                  "Id": "1",
                  "Name": "UPS Ground",
                  "Cost": 0,
                  "EstimatedTransitTime": "14",
                  "Currency": "CAD"
                },
                {
                  "Id": "2",
                  "Name": "UPS Ground Express",
                  "Cost": 17.95,
                  "EstimatedTransitTime": "7",
                  "Currency": "CAD"
                }
            ]
        }
    ],
    "Items": []
}

(Optional) Step 7 - Get Company Tree

You can allow customers to create Ship to Store orders by providing the Order with an EntityId with the request Getting All Locations for a Company and the following paramers:

From the response, the following values will be used in later steps:

Example Request

GET https://entitymanagerrc.iqmetrix.net/v1/Companies(14146)/Locations
Authorization: Bearer b0k0dY70N3Vv9jR1b9oEdW9IeT5WIn85WCYFJRo6AiIKLEMBFwNbEQsfeCUeM3gdPA1gAAVxWTJacX8mJyBaGRcFVwQOEV49NgBz        
Accept: application/json

Example Response

HTTP 200 Content-Type: application/json
[    
    {
        "LocationStatus": "Active",
        "LocationType": null,
        "LocationSubType": null,
        "Address": {
            "AddressLine1": "1521 Main St",
            "AddressLine2": null,
            "City": "Huntington Beach",
            "StateCode": "CA",
            "StateName": "California",
            "CountryCode": "US",
            "CountryName": "United States",
            "Zip": "90210"
        },
        "Contacts": [],
        "StorePhoneNumbers": [],
        "Area": null,
        "StoreHours": {},
        "Geography": null,
        "TimeZone": {
            "Id": "Central Standard Time",
            "DaylightSavingTimeEnabled": false
        },
        "Id": 14192,
        "Name": "Location",
        "DisplayName": "",
        "Description": "",
        "Roles": [
            {
                "Name": "Location"
            }
        ],
        "Role": "Location",
        "SortName": "Location",
        "Attributes": {},
        "Relationships": [
            {
                "Id": 667847,
                "Definition": 16,
                "Source": 173600,
                "Destination": 611444,
                "CreatedUtc": "2019-06-26T18:15:54.332Z",
                "Version": 1
            }
        ],
        "Version": 14,
        "CreatedUtc": "2016-08-11T15:06:44.111Z",
        "LastModifiedUtc": "2020-05-04T08:16:59.364Z",
        "CorrelationId": "6935",
        "ClientEntityId": null,
        "TypeId": 1818,
        "Logo": null,
        "Website": null
    }
]

Step 8 - Create an Order

You can create a dropship order using the request Creating an Order with Items and the following parameters:

From the response, the following values will be used in later steps:

Example Request

POST https://orderrc.iqmetrix.net/v1/Companies(14146)/OrderFull
Authorization: Bearer b0k0dY70N3Vv9jR1b9oEdW9IeT5WIn85WCYFJRo6AiIKLEMBFwNbEQsfeCUeM3gdPA1gAAVxWTJacX8mJyBaGRcFVwQOEV49NgBz        
Accept: application/json
Content: application/json        
{
    "OrderTypeId": 1,
    "EntityId": 14146,
    "TenderId": "TT101IN18",
    "BillingCustomerId": "659c2a38-d083-4421-9330-46d779702f85",
    "BillingAddressId": "5e534ed7-6c89-4f35-bc39-304783f56d1e",
    "ShippingAddressId": "5e534ed7-6c89-4f35-bc39-304783f56d1e",
    "ShippingCustomerId": "659c2a38-d083-4421-9330-46d779702f85",
    "ShippingEntityId": 0,
    "SourceId": "0ce24f40-0183-4fcf-a4eb-8ac19db55723",
    "SourceName": "Third Party eCommerce",
    "Items": [
        {
            "ItemTypeId": 1,
            "ItemStatusId": 1,
            "ProductId": "a183f1a9-c58f-426a-930a-9a6357db52ed",
            "SellingPrice": 4.99,
            "ShippingOptionId": 1,
            "SupplierEntityId": 14107,
            "Description": "The world’s first dual-edge display was born from a need to create something new...",
            "Quantity": 1
        }
    ]
}

Example Response

HTTP 201 Content-Type: application/json   
{
    "Id": "cdd26b8f-4ed1-409d-9984-982e081c425e",
    "OrderTypeId": 1,
    "OrderType": "Sales",
    "State": "Created",
    "PrintableId": "019J6MS",
    "Name": null,
    "TenderId": "TT101IN18",
    "TenderOrigin": null,
    "SourceId": null,
    "SourceName": null,
    "EntityId": 14146,
    "ShippingEntityId": 0,
    "BillingCustomerId": "659c2a38-d083-4421-9330-46d779702f85",
    "BillingAddressId": "5e534ed7-6c89-4f35-bc39-304783f56d1e",
    "ShippingAddressId": "5e534ed7-6c89-4f35-bc39-304783f56d1e",
    "ShippingCustomerId": "659c2a38-d083-4421-9330-46d779702f85",
    "EmployeeId": 0,
    "DiscountCode": null,
    "DiscountDescription": null,
    "DiscountAmount": 0,
    "CreatedDateUtc": "2017-03-15T22:43:28.537",
    "OrderExpiryHours": 72,
    "OrderExpiryDate": "2017-03-18T22:43:28.537",
    "SourceId": "0ce24f40-0183-4fcf-a4eb-8ac19db55723",
    "SourceName": "Third Party eCommerce",    
    "Items": [
        {
            "Id": "f15100db-c237-49f2-97d1-7910b87e278c",
            "ProductId": "a183f1a9-c58f-426a-930a-9a6357db52ed",
            "SupplierEntityId": 14107
            "ShippingOptionId": 1,
            "OrderId": "78e50fb8-aefb-4ca1-923d-9e7800d3b792",
            "ItemTypeId": 1,
            "ItemType": "DropShip",
            "ItemStatusId": 1,
            "ItemStatus": "New",
            "Quantity": 1,
            "Cost": 0,
            "ListPrice": 0,
            "SellingPrice": 4.99,
            "Index": 0,
            "Description": "The world’s first dual-edge display was born from a need to create something new...",
            "SKU": null,
            "Notes": null,
            "SerialNumbers": [],
            "SupplierReference": null,
            "TrackingInformation": [],
            "ItemExtensions": []              
        }
    ]
}

Step 9 - Process an Order

Finally, you can submit the dropship order using the request Processing an Order and the following parameters:

Example Request

POST https://orderrc.iqmetrix.net/v1/Companies(14146)/Orders(cdd26b8f-4ed1-409d-9984-982e081c425e)/Process
Authorization: Bearer b0k0dY70N3Vv9jR1b9oEdW9IeT5WIn85WCYFJRo6AiIKLEMBFwNbEQsfeCUeM3gdPA1gAAVxWTJacX8mJyBaGRcFVwQOEV49NgBz        
Accept: application/json
Content: application/json                
{
    "OrderId": "cdd26b8f-4ed1-409d-9984-982e081c425e"
}

Example Response

HTTP 201 Content-Type: application/json   
{
  "Id": 1,
  "OrderId": "33b721c3-7872-4db6-8bf4-f2ac89d2f06e"
}