Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 16 Next »

How does it work ?

Basically

  1. Channel Advisor has a SKU record with lots of attributes
    1. One attribute is a Label (TAG) of the marketplaces it is live on - a single field with multiple comma delimited tabs
      1. Labels trigger rules to put the product live on the marketplace nominated > BDirect made these rules and included the TAGS to manage the multiple marketplaces.  no Label it is not live - label it is live.
    2. For each marketplace - there is attributes used for related prices
    3. The stock level available is shown on all marketplaces
    4. Each SKU can have stock in multiple marketplaces.


This is the channel advisor API requirements

A typical integration https://developer.channeladvisor.com/a-typical-integration  Note in this image all deals are tracked in channel advisor....

Channel advisor flows

Labels (eBay, Amazon Seller Central - AU, etc ) - trigger a rule (signing of a template) to put the product live - until inventory reaches qty of 1 (or date) . Different rules can be setup 

Listing can have multiple SKU's

  1. Templates > 

SKus have multiple prices - on attributes - these are updated and then push to the marketplaces.  Typically hold details for 9 days minimum.

Link to code details https://developer.channeladvisor.com/soap-api-documentation/code-samples/inventory-service-examples/synchinventoryitemlist-examples

API examples and code samples

https://developer.channeladvisor.com/soap-api-documentation/code-samples

SKU information

https://developer.channeladvisor.com/soap-api-documentation/code-samples/inventory-service-examples/synchinventoryitemlist-examples

Request

Code to syn inventory itemSaaSplications Field

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://api.channeladvisor.com/webservices/">



   <soapenv:Header>



      <web:APICredentials>



         <web:DeveloperKey>?</web:DeveloperKey>

host company > Channel advisor API > developer key

         <web:Password>?</web:Password>

host company > Channel advisor API > password

      </web:APICredentials>

host company > Channel advisor API > APICredentials

   </soapenv:Header>



   <soapenv:Body>



      <web:SynchInventoryItemList>



         <web:accountID>?</web:accountID>

host company > Channel advisor API > AccountID

         <web:itemList>



            <web:InventoryItemSubmit>



               <web:Sku>?</web:Sku>

SKU

               <web:Title>?</web:Title>

SKU: Name

               <web:Subtitle>?</web:Subtitle>

SKU: subtitle field ?

               <web:ShortDescription>?</web:ShortDescription>

SKU: Short Description

               <web:Description>?</web:Description>

SKU: Description

               <web:Weight>?</web:Weight>

SKU: Shipping Carton Weight

               <web:SupplierCode>?</web:SupplierCode>

SKU: BDirect ?

               <web:WarehouseLocation>?</web:WarehouseLocation>

SKU: Stock location of active deal ?

               <web:TaxProductCode>?</web:TaxProductCode>

SKU: Price-GST

               <web:FlagStyle>?</web:FlagStyle>

SKU: ?

               <web:FlagDescription>?</web:FlagDescription>

?

               <web:IsBlocked>?</web:IsBlocked>

SKU: Shopping Cart Status = Hidden

               <web:BlockComment>?</web:BlockComment>

"Hidden" if blocked

               <web:ASIN>?</web:ASIN>



               <web:ISBN>?</web:ISBN>



               <web:UPC>?</web:UPC>

SKU: Barcode (if UPC)

               <web:MPN>?</web:MPN>

SKU: SKU Code

               <web:EAN>?</web:EAN>

SKU: Barcode (if EAN)

               <web:Manufacturer>?</web:Manufacturer>



               <web:Brand>?</web:Brand>

SKU: Brand

               <web:Condition>?</web:Condition>

SKU: New

               <web:Warranty>?</web:Warranty>

SKY: Warrantee

               <web:ProductMargin>?</web:ProductMargin>



               <web:SupplierPO>?</web:SupplierPO>



               <web:HarmonizedCode>?</web:HarmonizedCode>

SKU: HS Tariff code for international shipments

               <web:Height>?</web:Height>

SKU: Height

               <web:Length>?</web:Length>

SKU: Length

               <web:Width>?</web:Width>

SKU: Width

               <web:Classification>?</web:Classification>

?

               <web:DistributionCenterList>



                  <web:DistributionCenterInfoSubmit>



                     <web:DistributionCenterCode>?</web:DistributionCenterCode>

Warehouse: ID

                     <web:Quantity>?</web:Quantity>

SKU: Available Quantity

                     <web:QuantityUpdateType>?</web:QuantityUpdateType>



                     <web:WarehouseLocation>?</web:WarehouseLocation>

SKU: Address ?

                     <web:ReceivedInInventory>?</web:ReceivedInInventory>



                     <web:ShippingRateList>



                        <web:ShippingRateInfo>



                           <web:DestinationZoneName>?</web:DestinationZoneName>

Shipping Zone ID

                           <web:CarrierCode>?</web:CarrierCode>

Carrier Code

                           <web:ClassCode>?</web:ClassCode>

SKU: Carrier Class Code

                           <web:FirstItemRate>?</web:FirstItemRate>

SKU: Carrier $ per item

                           <web:AdditionalItemRate>?</web:AdditionalItemRate>

SKU: Carrier $ per additional item

                           <web:FirstItemHandlingRate>?</web:FirstItemHandlingRate>



                           <web:AdditionalItemHandlingRate>?</web:AdditionalItemHandlingRate>



                           <web:FreeShippingIfBuyItNow>?</web:FreeShippingIfBuyItNow>

SKU: Free shipping if buy it now flag ?

                           <web:FirstItemRateAttribute>?</web:FirstItemRateAttribute>



                           <web:FirstItemHandlingRateAttribute>?</web:FirstItemHandlingRateAttribute>



                           <web:AdditionalItemRateAttribute>?</web:AdditionalItemRateAttribute>



                           <web:AdditionalItemHandlingRateAttribute>?</web:AdditionalItemHandlingRateAttribute>



                        </web:ShippingRateInfo>



                     </web:ShippingRateList>



                  </web:DistributionCenterInfoSubmit>



               </web:DistributionCenterList>



               <web:PriceInfo>



                  <web:Cost>?</web:Cost>



                  <web:RetailPrice>?</web:RetailPrice>

SKU: RRP

                  <web:StartingPrice>?</web:StartingPrice>

only one deal at a time active?

                  <web:ReservePrice>?</web:ReservePrice>



                  <web:TakeItPrice>?</web:TakeItPrice>



                  <web:SecondChanceOfferPrice>?</web:SecondChanceOfferPrice>



                  <web:StorePrice>?</web:StorePrice>



               </web:PriceInfo>



               <web:AttributeList>



                  <web:AttributeInfo>



                     <web:Name>?</web:Name>

SKU:Attribute name - used for by marketplace prices, multiple categories by marketplace,

                     <web:Value>?</web:Value>

SKU:Attribute value

                  </web:AttributeInfo>



               </web:AttributeList>



               <web:VariationInfo>



                  <web:IsInRelationship>?</web:IsInRelationship>

SKU: group (yes/no)

                  <web:RelationshipName>?</web:RelationshipName>

SKU: Group Name

                  <web:IsParent>?</web:IsParent>

SKU: Is Group SKU

                  <web:ParentSku>?</web:ParentSku>

SKU: Group SKU

               </web:VariationInfo>



               <web:StoreInfo>



                  <web:DisplayInStore>?</web:DisplayInStore>

Deal related ?

                  <web:Title>?</web:Title>



                  <web:Description>?</web:Description>



                  <web:CategoryID>?</web:CategoryID>



               </web:StoreInfo>



               <web:ImageList>



                  <web:ImageInfoSubmit>



                     <web:PlacementName>?</web:PlacementName>

SKU: Image - Placement

                     <web:FolderName>?</web:FolderName>



                     <web:FilenameOrUrl>?</web:FilenameOrUrl>

SKU:Image URL

                  </web:ImageInfoSubmit>



               </web:ImageList>



               <web:LabelList>



                  <web:string>?</web:string>



               </web:LabelList>



               <web:MetaDescription>?</web:MetaDescription>



            </web:InventoryItemSubmit>



         </web:itemList>



      </web:SynchInventoryItemList>



   </soapenv:Body>



</soapenv:Envelope>               </web:StoreInfo>



Deal information - for SKU list (Ebay)

https://developer.channeladvisor.com/soap-api-documentation/code-samples/marketplace-ad-service-examples/admarketplaceadforskulist-examples

Request


SaaSplications Field

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://api.channeladvisor.com/webservices/">


   <soapenv:Header>


      <web:APICredentials>


         <web:DeveloperKey>XXX</web:DeveloperKey>


         <web:Password>XXX</web:Password>


      </web:APICredentials>


   </soapenv:Header>


   <soapenv:Body>


      <web:AddMarketplaceAdForSkuList>


         <web:accountID>XXX</web:accountID>


         <web:skuList>


            <web:MarketplaceAdSkuRequest>


               <web:Sku>SKU0001</web:Sku>


               <web:AdTitleOverride>Ad Title for SKU0001</web:AdTitleOverride>


            </web:MarketplaceAdSkuRequest>


            <web:MarketplaceAdSkuRequest>


               <web:Sku>SKU0002</web:Sku>


               <web:AdTitleOverride></web:AdTitleOverride>


            </web:MarketplaceAdSkuRequest>


            <web:MarketplaceAdSkuRequest>


               <web:Sku>SKU0003</web:Sku>


               <web:AdTitleOverride>Ad Title for SKU0003</web:AdTitleOverride>


            </web:MarketplaceAdSkuRequest>


            <web:MarketplaceAdSkuRequest>


               <web:Sku>SKU0004</web:Sku>


               <web:AdTitleOverride></web:AdTitleOverride>


            </web:MarketplaceAdSkuRequest>


         </web:skuList>


         <web:postingTemplate>My Favorite Posting Template</web:postingTemplate>


         <web:adTemplate>My Favorite Ad Template</web:adTemplate>


         <web:schedule></web:schedule>


         <web:flagStyle>NoFlag</web:flagStyle>


         <web:flagDescription></web:flagDescription>


         <web:primaryCategory></web:primaryCategory>


         <web:secondaryCategory></web:secondaryCategory>


         <web:primaryStoreCategory></web:primaryStoreCategory>


         <web:secondaryStoreCategory></web:secondaryStoreCategory>


      </web:AddMarketplaceAdForSkuList>


   </soapenv:Body>


</soapenv:Envelope>               <web:AdTitleOverride></web:AdTitleOverride>


            </web:MarketplaceAdSkuRequest>


            <web:MarketplaceAdSkuRequest>


               <web:Sku>SKU0003</web:Sku>


Get Order List

https://developer.channeladvisor.com/soap-api-documentation/code-samples/orderservice-getorderlist

Request Using visual studio.net

RequestSaaSplications Field

using System;


using System.Collections.Generic;


using System.Text;




namespace WindowsApplication13


{


  public class OrderRetriever


  {


    public List<string> GetSkuList()


    {


      //


      // 1. For this sample to work you will need create a web reference in


      // your VS.Net project by pointing to this URL:


      // https://api.channeladvisor.com/ChannelAdvisorAPI/v6/InventoryService.asmx?wsdl


      // Accept the default reference name of com.channeladvisor.api.OrderService


      //


      // 2. You will most likely need to change the namespace above (WindowsApplication13) to match


      // your projects default namespace so that it can see the web reference.


      // 3. Update the code to use your DeveloperKey, password, and AccountKey.




      const string developerApiGuid = "MyDeveloperKey";


      const string password = "myPassword";


      const string sellerAccountGuid = "MyAccountKey";


      com.channeladvisor.api.OrderService orderService = new com.channeladvisor.api.OrderService();


      com.channeladvisor.api.APICredentials apiCredentials = new com.channeladvisor.api.APICredentials();


      apiCredentials.DeveloperKey = developerApiGuid;


      apiCredentials.Password = password;


      orderService.APICredentialsValue = apiCredentials;




      com.channeladvisor.api.OrderCriteria orderCriteria = new com.channeladvisor.api.OrderCriteria();


      // Only grab items that are marked has Shipped


      orderCriteria.ShippingStatusFilter = "Shipped";


      //Only grab orders created from Mar 17, 2013 to Mar 18, 2013


      orderCriteria.OrderCreationFilterBeginTimeGMT = new System.DateTime(2013, 3, 17);


      orderCriteria.OrderCreationFilterEndTimeGMT = new DateTime(2013, 3, 18);


      // Set other properties required by call


      orderCriteria.DetailLevel = "High";


      orderCriteria.PageSize = 50; // Show 50 orders per page


      orderCriteria.PageNumberFilter = 0;




      List<string> skuList = new List<string>();


      bool moreResults = true;




      // Call the API several times to retrieve a list of all matches


      while (moreResults)


      {


        orderCriteria.PageNumberFilter += 1; // Get the next page each time through the loop


        com.channeladvisor.api.APIResultOfArrayOfOrderResponseItem orderResponse = orderService.GetOrderList(sellerAccountGuid, orderCriteria);


        if (orderResponse.Status == com.channeladvisor.api.ResultStatus.Success)


        {


          com.channeladvisor.api.OrderResponseItem[] orderResponseList = orderResponse.ResultData;


          if (orderResponseList.Length == 0 || orderResponseList.Length < orderCriteria.PageSize)


          {


            moreResults = false;


          }


          //step through each order in our returned array


          foreach (com.channeladvisor.api.OrderResponseDetailHigh order in orderResponseList)


          {


            System.Diagnostics.Debug.WriteLine("OrderID = " + order.OrderID.ToString());


            //step through each item in this Order


            foreach (com.channeladvisor.api.OrderLineItemItem invoiceLine in order.ShoppingCart.LineItemSKUList)


            {


              System.Diagnostics.Debug.WriteLine("LineItemID = " + invoiceLine.LineItemID.ToString());


              // Grab a list of all SKUs from invoices on this page


              skuList.Add(invoiceLine.SKU);


            }




            //step through each Promo.


            foreach (com.channeladvisor.api.OrderLineItemPromo promo in order.ShoppingCart.LineItemPromoList)


            {


              System.Diagnostics.Debug.WriteLine(string.Format("Promo code of {0} had a value of {1}", promo.PromoCode, promo.UnitPrice));


            }




            //step through each ItemInvoice in this Order.  These are subtotal categories


            foreach (com.channeladvisor.api.OrderLineItemInvoice line in order.ShoppingCart.LineItemInvoiceList)


            {


              if (line.LineItemType == "Shipping")


              {


                System.Diagnostics.Debug.WriteLine(string.Format("Shipping charge of {0}",line.UnitPrice));


              }


              else if (line.LineItemType == "VATShipping")


              {


                System.Diagnostics.Debug.WriteLine(string.Format("VAT Shipping charge of {0}", line.UnitPrice));


              }


              else if (line.LineItemType == "SalesTax")


              {


                System.Diagnostics.Debug.WriteLine(string.Format("Sales Tax charge of {0}", line.UnitPrice));


              }


              else if (line.LineItemType == "ShippingInsurance")


              {


                System.Diagnostics.Debug.WriteLine(string.Format("Shipping Insurance charge of {0}", line.UnitPrice));


              }


              else


              {


                System.Diagnostics.Debug.WriteLine("Unexpected line type of " + line.LineItemType);


              }


            }


          }


        }


        else


        {


          int errorCode = orderResponse.MessageCode;


          string errorMessage = orderResponse.Message;


          System.Diagnostics.Debug.WriteLine(string.Format("An unexpected error occured. ErrorCode={0}, ErrorMessage={1}", errorCode, errorMessage));


        }


      }


      return skuList;


    }


  }


}


Python


from suds.client import Client


import logging


 


logging.basicConfig(level=logging.INFO)


logging.getLogger('suds.client').setLevel(logging.DEBUG)


 


# Specify Login Information


developer_key = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'


password = 'xxxxxxxx'


account_guid = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'


 


# Specify URLs


wsdl_url = 'https://api.channeladvisor.com/ChannelAdvisorAPI/v6/OrderService.asmx?WSDL'


service_url = 'https://api.channeladvisor.com/ChannelAdvisorAPI/v6/OrderService.asmx'


 


# Initialize client.


client = Client(wsdl_url, location = service_url)


 


login = client.factory.create('APICredentials')


login.DeveloperKey = developer_key


login.Password = password


client.set_options(soapheaders=login)


 


# Instantiate our GetOrderList Object


getOrderList = client.factory.create('GetOrderList')


getOrderList.orderCriteria.OrderCreationFilterBeginTimeGMT = '2000-01-01T00:00:00'


getOrderList.orderCriteria.OrderCreationFilterEndTimeGMT = '2012-09-05T00:00:00'


getOrderList.orderCriteria.StatusUpdateFilterBeginTimeGMT = None


getOrderList.orderCriteria.StatusUpdateFilterEndTimeGMT = None


getOrderList.orderCriteria.JoinDateFiltersWithOr = None


getOrderList.orderCriteria.DetailLevel = 'High'


getOrderList.orderCriteria.ExportState = None


getOrderList.orderCriteria.OrderIDList = None


getOrderList.orderCriteria.ClientOrderIdentifierList = None


getOrderList.orderCriteria.OrderStateFilter = 'Active'


getOrderList.orderCriteria.PaymentStatusFilter = 'Cleared'


getOrderList.orderCriteria.CheckoutStatusFilter = 'Completed'


getOrderList.orderCriteria.ShippingStatusFilter = 'Unshipped'


getOrderList.orderCriteria.RefundStatusFilter = None


getOrderList.orderCriteria.DistributionCenterCode = None


getOrderList.orderCriteria.PageSize = 20


getOrderList.orderCriteria.PageNumberFilter = 1


 


continueRequests = True


while continueRequests is True:


    print 'Page', getOrderList.orderCriteria.PageNumberFilter


    result = client.service.GetOrderList(account_guid, getOrderList.orderCriteria)


 


    ordersInResult = len(result.ResultData.OrderResponseItem)


    print '    Orders In Page:', ordersInResult


 


    for order in result.ResultData.OrderResponseItem:


        print '        ', order.OrderID




    if ordersInResult < 20:


        continueRequests = False


    else:


        getOrderList.orderCriteria.PageNumberFilter += 1


Result


SaaSplications field

<?xml version="1.0" encoding="UTF-8"?>


<SOAP-ENV:Envelope xmlns:tns="http://api.channeladvisor.com/webservices/" xmlns:ns0="http://api.channeladvisor.com/webservices/" xmlns:ns1="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns2="http://api.channeladvisor.com/datacontracts/orders" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">


   <SOAP-ENV:Header>


      <tns:APICredentials>


         <tns:DeveloperKey>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</tns:DeveloperKey>


         <tns:Password>xxxxxxxx</tns:Password>


      </tns:APICredentials>


   </SOAP-ENV:Header>


   <ns1:Body>


      <ns0:GetOrderList>


         <ns0:accountID>xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx</ns0:accountID>


         <ns0:orderCriteria>


            <ns2:OrderCreationFilterBeginTimeGMT>2000-01-01T00:00:00</ns2:OrderCreationFilterBeginTimeGMT>


            <ns2:OrderCreationFilterEndTimeGMT>2012-09-05T00:00:00</ns2:OrderCreationFilterEndTimeGMT>


            <ns2:StatusUpdateFilterBeginTimeGMT xsi:nil="true"/>


            <ns2:StatusUpdateFilterEndTimeGMT xsi:nil="true"/>


            <ns2:JoinDateFiltersWithOr xsi:nil="true"/>


            <ns2:DetailLevel>High</ns2:DetailLevel>


            <ns2:OrderStateFilter>Active</ns2:OrderStateFilter>


            <ns2:PaymentStatusFilter>Cleared</ns2:PaymentStatusFilter>


            <ns2:CheckoutStatusFilter>Completed</ns2:CheckoutStatusFilter>


            <ns2:ShippingStatusFilter>Unshipped</ns2:ShippingStatusFilter>


            <ns2:PageNumberFilter>1</ns2:PageNumberFilter>


            <ns2:PageSize>20</ns2:PageSize>


         </ns0:orderCriteria>


      </ns0:GetOrderList>


   </ns1:Body>


</SOAP-ENV:Envelope>






  • No labels