The RPMWare API provides programatic access to many of the operations available within the RPMWare application. In other words, it allows developers to write code that retrieves and/or updates information in your RPMWare account. Common uses for the API include: retrieving orders, updating order status, and setting pricing on items.

Nerd Alert! Use of the API requires a fundamental understanding of computer programming. It is not intended for non-technical users and we cannot provide "how do I write a program" type support. If you do not have development experience we highly recommend you hire an experienced developer to complete your API project.

Getting Started

The RPMWare API is comprised of a collection of SOAP web services. To get started you'll need a SOAP client, an active RPMWare account, and a RPMWare user account with password.

A sample .NET API Client is available on GitHub; however, you can write your program in the language of your choice. If you've never worked with a SOAP API a quick search for [your language] soap client tutorial should point you in the right direction. PHP has a built-in SOAP Client; Ruby developers should check out Savon.

Authentication

All requests must be sent over HTTPS and authenticated with an API token. To obtain a token call the Login operation on the User web service. The web service will return an ApiToken and TokenExpiration. You'll use the ApiToken on all future API calls.

Some 3rd-party applications may require a static API Token. Please contact us to request a static token.

API Timeout

Your API token will expire after 45-minutes of inactivity. If you call any of the methods with an expired token you'll get a false result and error message. The User web service provides an AmILoggedIn operation to check your current authentication status.

Available API Objects

The following API objects are available. Please click the links below for supported operations.

API Object WSDL
Customer https://secure.rpmware.com/api/customer.asmx?WSDL
Customer Level https://secure.rpmware.com/api/customerlevel.asmx?WSDL
Item https://secure.rpmware.com/api/item.asmx?WSDL
Order https://secure.rpmware.com/api/order.asmx?WSDL
User https://secure.rpmware.com/api/user.asmx?WSDL
The RPMWare API is under constant development based solely on customer feedback. Please contact us if an API operation you need is missing.

API Responses

The API returns xml documents which your SOAP client should transform into native objects. In most cases you will not need to interact directly with the response xml; however, it can be useful in debugging. Several sample responses are available for review on GitHub.

When appropriate the WSDL defines the complex types returned by the API. You can review the WSDL for all the web services at the URLs listed above. As an example, the Order complex-type is shown below.

<s:complexType name="Order">
    <s:complexContent mixed="false">
        <s:extension base="tns:ApiModelBase">
            <s:sequence>
                <s:element minOccurs="0" maxOccurs="1" name="BillingAddress" type="tns:Address"/>
                <s:element minOccurs="0" maxOccurs="1" name="Customer" type="tns:Customer"/>
                <s:element minOccurs="0" maxOccurs="1" name="CustomerComments" type="s:string"/>
                <s:element minOccurs="0" maxOccurs="1" name="History" type="tns:ArrayOfOrderHistory"/>
                <s:element minOccurs="0" maxOccurs="1" name="LineItems" type="tns:ArrayOfOrderLineItem"/>
                <s:element minOccurs="0" maxOccurs="1" name="OrderNo" type="s:string"/>
                <s:element minOccurs="0" maxOccurs="1" name="OrderStatus" type="s:string"/>
                <s:element minOccurs="1" maxOccurs="1" name="OrderTotal" type="s:decimal"/>
                <s:element minOccurs="0" maxOccurs="1" name="Payments" type="tns:ArrayOfPayment"/>
                <s:element minOccurs="0" maxOccurs="1" name="ShippingAddress" type="tns:Address"/>
                <s:element minOccurs="1" maxOccurs="1" name="ShippingAmount" type="s:decimal"/>
                <s:element minOccurs="0" maxOccurs="1" name="ShippingMethod" type="s:string"/>
                <s:element minOccurs="1" maxOccurs="1" name="TaxAmount" type="s:decimal"/>
                <s:element minOccurs="0" maxOccurs="1" name="CouponCode" type="s:string"/>
                <s:element minOccurs="0" maxOccurs="1" name="CouponName" type="s:string"/>
                <s:element minOccurs="0" maxOccurs="1" name="TrackingNumbers" type="tns:ArrayOfOrderTracking"/>
            </s:sequence>
        </s:extension>
    </s:complexContent>
</s:complexType>

Each response includes three parts:

  • a Success element which returns true or false.
  • a Message element which returns a human-readable error message if Success is false.
  • a Data element which wraps the data returned by the API. For example a list of orders when calling GetOrders.

Error Messages

If the success element is false an error message will be returned. Common errors include:

  • User Not Logged In
  • [object] Not Found where [object] is the type being requested (User, Order, Customer, etc.)