April 4, 2013
It has been a while since we published a blog post summarizing our API updates and best practices for integrations.
API Updates
Over the past few years, there has been an immense amount of work done on the Shipwire APIs. Here is a laundry list of changes by API.
All APIs
- Added support for dedicated API users so account administrator credentials did not need to be shared with third parties
- Added support for Philadelphia (PA) and Hong Kong (HKG) warehouses
Inventory
- Added estimated availability date for out-of-stock SKUs with pending receiving
- Added 1-, 7-, and 28-day inventory velocity data to response (SKU quantity ordered/shipped)
- Added Product[@isAlias] and Product[@isBundle] attributes to indicate a SKU’s status as an alias or bundle
Fulfillment
- Added Order/Hold indicator to force an order to be held
- Added Order/ForceDuplicate indicator to defeat duplicate detection
- Added Order/SameDay element to indicate the desire for same-day shipping when possible
- Added Order/DoNotShipBefore element to support delayed shipping
- Added Order/CompanyName element to support custom return company name on packing lists
- Added Order/Carrier for requesting an explicit carrier (vs. a level of service)
- Added Order/CanSplit to request that an order with mixed in-stock/out-of-stock SKUs be split into an in-stock order (which ships immediately) and an out-of-stock order (which is backordered).
- Added Order/WarehouseContinents element to restrict the considered warehouse pool to one or more given continental regions.
- Added Order/AddressInfo/Company to allow specifying a ship-to company name
- Added Order/PostalCode element as a region-neutral synonym for Order/Zip
- Added Order/PoBox indicator as an indicator asserting a shipt-o address is a post-office box
- Added E-INTL, PL-INTL, and PM-INTL as international service levels for Order/Shipping element
- Added Order/Invoice element and children, and Item/UnitValue for specification of sales prices to be used in export documentation.
- Added Order/Message to support gift messages
- Added OrderList[@processingMode=’async’] attribute to support asynchronous requests
- Added detailed order holds information to the synchronous fulfillment response
- Added detailed order geo-location information to the synchronous fulfillment response
- Added unfilled item information for split orders when an order was considered for splitting
Tracking
- Added TrackingUpdate/IncludeShippedOnly to limit responses to shipped orders
- Added TrackingUpdate/IncludeHeldOnly to limit responses to held orders
- Added TrackingUpdate/IncludeHolds to include detailed information about order holds in the response
- Added detailed costs information to tracking response
- Added detailed return status information to tracking response
- Added “order was manually edited” indicator to tracking response
Rating
- Added Source element to track the platform/version making the request
- Added support for real-time currency conversion to store currency
- Added AddressInfo/Commercial and AddressInfo/PoBox to mirror the fulfillment API’s indicators
- Added support for multiple international service levels
- Added Service[@deliveryConfirmation], Service[@trackable], and Service[@signatureRequired] to indicate these properties of rated services.
- Added Quote/CarrierCode to help support explicit carrier requests at fulfillment post time
New APIs (beta)
- Order cancel
- Order hold
- Order ship-confirm (for SA)
- Receiving
If you haven’t checked out our API documentation in a while, it’s worth a look
To improve load-balancing and redundancy, Shipwire hosts its web services on a dedicated subdomain: api.shipwire.com. We’ve announced this a few times, but please ensure your API requests post to the https://api.shipwire.com/ URL prefix. We would like to deprecate non-subdomain-based API calls soon.
- Inventory Updates by country. Shipwire will report inventory by country. This is to make it easier for global sellers to operate localized storefronts.
- Merchants who wish to limit inventory queries to certain SKUs can now do so. See the updated InventoryUpdate DTD to see how to do this.
- Tracking update queries can now specify individual orders for which to retrieve updated tracking information. This can make bulk update requests more efficient. You can request tracking updates by cart order number or Shipwire ID. See the TrackingUpdate DTD for more.
- Tracking update responses now include additional information about order tracking status, including full carrier name information, detailed order costs, and a carrier-specific tracking URL (when available). See the TrackingUpdateResponse DTD for more information.
- Fulfillment requests can customize order processing behavior on a per-order basis. We’ve added flags to allow you to hold orders, allow duplicate orders, request guaranteed same-day shipping, and more. Check out the OrderList DTD.
- In a near-term release, we will be giving merchants more direct carrier selection control per-order as well—stay tuned.
If you want shipping rates in checkout, you should implement the real-time shipping rate API found in Shipwire API documentation.
Feel free to comment on this blog post if you have a recommendation for more API features to embed shipping and order fulfillment functionality into your application.
Best Practices For Integrations
As you consider integrating to Shipwire or review your integration, we want to share a few best practices.
- Network Outages: It always makes sense to review how your application will respond if your request can’t reach Shipwire servers. For example, *ix developers should consider using cron or a similar scheduling mechanism to retry a fulfillment request in case there is a temporary issue with connectivity. In particular, if you integrate to the Shipwire real-time shipping rate API, ensure you have sensible flat-rate or table-based order pricing available as a fail-over in the event your application can’t reach Shipwire servers.
- Order Holds: Please ensure you are reviewing the responses from fulfillment requests to see whether any exceptions (order holds) arose during the order post. These indicate that further action may be required by the merchant before the order is ready to ship. More details can be found in the SubmitOrderResponse DTD.
- Rating API: Optimize shipping costs by ensuring that your storefront checkout retrieves shipping rates from Shipwire’s rating API. The rating API automatically selects the most optimal warehouse and carrier options, returning the best carrier and rate available for each class of service.
Double Check Your Partner IDs
When you sign up for the Shipwire partner program, you get a co-brandable landing page that automatically tells Shipwire when you refer a user.
We also allow developers to pass their partner ID through each order API call to stamp the order. This is very helpful if you have built an open-source integration or if your solution isn’t hosted. Please ensure that your partner ID is sent on every request to the Shipwire fulfillment API. Put it in the
Is Shipwire Marketing Your Integration Correctly?
We market integrations on our connections pages. Any integration to Shipwire gets a reciprocal page on Shipwire.com and gets listed on our compatible solutions page. Contact partner (at) Shipwire (dot) com if you need to adjust content.