Last updated on

Infrastructure

Wineshipping’s API is hosted in Azure on high-availability, scalable cloud infrastructure to ensure maximum performance. Application functionality is exposed through secure API endpoints and encrypted SSL browser sessions. The Wineshipping API has been designed for easy integration with external applications through a collection of RESTful operations.

Robust Architecture

  • Available 24/7
  • Secure Authentication and Access
  • Auto-scale for increased demands
  • Interactive modeler for integration design
  • Full lifecycle testing support

Environment & Endpoints

All API operations are RESTful and support secure HTTPS requests. The responses are JSON along with standard HTTP code.

The Production API should be used for all production transaction communications.

The Development environment should be used for integration development and testing.

Authentication

Wineshipping API methods require credentials to be passed as part of the request body in an Authentication object

Request

NameTypeRequiredDescription
AuthenticationAuthentication ObjectYesCredentials are required to execute API operations.

Authentication Object

NameTypeRequiredDescription
UserKeyStringYesUser Key from Wineshipping.
PasswordStringYesPassword from Wineshipping.
CustomerNoStringYesCustomer account number

Response

NameTypeDescription
Operation Response BodyResponse BodyContains standard HTTP status codes indicating success or failure of the API operation call. If response indicates a failure, an error message will be supplied.

Rate Limits & Quotas

The Wineshipping API is designed to accommodate many businesses within the wine industry. It can scale effectively to handle spikes in order traffic like your club orders as well as high volume seasonal activities. There are no hard limits on the number of requests, but we do implement rate limiting in both testing and production. Quotas may be introduced in the future.

When a call rate is exceeded, the caller receives a 429 Too Many Requests response status code. This is most often triggered by immediately calling GetDetails after submitting an order. Instead of execessively polling for status updates we encourage you to use our event driven tracking webhooks to retrieve order status information.

Below is the table of rate-limits for each method:

OperationNameEnvCallsRenewal-Period
GetDetailsTEST20120
GetDetailsPROD60060
GetCarrierLocationsPROD30060
GetInventoryStatusPROD10060
GetPackagesPROD10060
GetSellabePROD10060
GetPackingSlipWithDeclaredValuePROD30030
SalesOrderGenerateJitLabelPROD30030
ValidationPROD30030
GetDeliveryEstimatesPROD10030
GetInventoryDetailsPROD10030
GetInventoryTransactionsPROD10030
GetOrdersOnHoldPROD10030
GetReturnsPROD10030

The renewal period is the length in seconds of a sliding window during which the number of allowed requests should not exceed the value specified in calls. For example then a call to GetDetails in PROD owld fail if its the 601st call in a minute.