API for Python

README API for Python

The Idea

The goal of this API is to provide a thin Python wrapper around the
Web Services API. As to why anyone would be generating big W-S APIs in the 21st
century? Don't get me started.

This API gives you a flexible configuration mechanism, calls for the more
common operations, cached authenticator token, conversation out-of-sync
detection, and examples as test cases.

This API depends on Python "Suds" and exerts minimal opinion on the format or
results of the operations. In other words, the naming conventions
for Suds-based I/O are not Pythonic and are dictated, instead, by the backing
WSDL. You'll probably want to extend the API here with your own so you can bury
all of the weird syntax under your own version of awesomeness.

The Installation

Simple with pip:

$ pip install

Easy with setuptools (but you really shouldn't):

$ easy_install

The Interface

These and other public functions are documented in

    Add postage to your account so you can start creating labels.

    Convenience methods for creating various call objects. In general, these
    will be bare objects that need to be populated with detail information
    based on the call you wish to make. See the get_* functions in for

    Account information accessor.

    Get a shipping label from one address to another based on a given rate.

    Get the available rates for a given shipping object.

    Get the tracking events for a given label ID.

    Register a new account with

    Cancel a shipping label (triggers a postage refund with

The Instantiation

The best way to get started is to digest the code in, which uses a
file to initialize a test StampsConfiguration. Below is a simple example that
uses the API to retrieve account information. Register with to get your own integration ID, username, and password.

    from stamps.config import StampsConfiguration
    from import StampsService

    integration_id = "XXXXXXXX-1111-2222-3333-YYYYYYYYYYYY"
    username = "stampy"
    password = "secret"
    configuration = StampsConfiguration(integration_id=integration_id,
        username=username, password=password)
    service = StampsService(configuration=configuration)
    account = service.get_account()