bronto-python 0.8.0
A python wrapper around Bronto's SOAP API
License: Apache
Keywords: bronto,soap,marketing

bronto-python
=============

bronto-python is a python query client which wraps the Bronto SOAP API in an
easy to use manner, using the `suds <https://fedorahosted.org/suds/>`_ library.

.. image:: https://travis-ci.org/Scotts-Marketplace/bronto-python.svg?branch=master
        :target: https://travis-ci.org/Scotts-Marketplace/bronto-python

.. image:: https://coveralls.io/repos/Scotts-Marketplace/bronto-python/badge.png?branch=master
        :target: https://coveralls.io/r/Scotts-Marketplace/bronto-python?branch=master

.. image:: https://pypip.in/d/bronto-python/badge.png
        :target: https://crate.io/packages/bronto-python/

Getting Started
===============

.. code:: python

    from bronto.client import Client
    
    client = Client('BRONTO_API_TOKEN')
    client.login()

Simple as that!

Contacts
========

Adding a Contact
----------------

.. code:: python

    contact_data = {'email': 'me@domain.com',
                    'source': 'api',
                    'customSource': 'Using bronto-python to import my contact'}
    client.add_contact(contact_data)

Retrieving a contact
--------------------

.. code:: python

    client.get_contact('me@domain.com')

Deleting a contact
------------------

.. code:: python

    client.delete_contact('me@domain.com')

Orders
======

Adding an order
---------------

.. code:: python

    order_data = {'id': 'xyz123',
                  'email': 'me@domain.com',
                  'products': [
                    {'id': 1,
                     'sku': '1111',
                     'name': 'Test Product 1',
                     'description': 'This is our first test product.',
                     'quantity': 1,
                     'price': 3.50},
                    {'id': 2,
                     'sku': '2222',
                     'name': 'Second Test Product',
                     'description': 'Here we have another product for testing.',
                   'quantity': 12,
                   'price': 42.00}
                  ]
                 }
    client.add_order(order_data)

Deleting an order
-----------------

.. code:: python

    client.delete_order('xyz123')  # Orders are deleted by their orderId

FIELDS
======

Adding a field
--------------

.. code:: python

    field_data = {'name': 'my_field',
                  'label': 'My Field',
                  'type': 'text',
                  'visible': 'private'
                  }
    client.add_field(field_data)

Retrieving a field
------------------

.. code:: python

    client.get_field('my_field')

Deleting a field
----------------

.. code:: python

    field = client.get_field('my_field')
    client.delete_field(field.id)

LISTS
=====

Adding a list
-------------

.. code:: python

    list_data = {'name': 'my_list',
                  'label': 'My List'
                  }
    client.add_list(list_data)

Retrieving a list
-----------------

.. code:: python

    client.get_list('my_list')

Deleting a list
---------------

.. code:: python

    list_to_del = client.get_list('my_list')
    client.delete_field(list_to_del.id)


**NOTE:** This client is not built with long-running processes in mind. The
Bronto API connection will time out after 20 minutes of inactivity, and this
client does NOT handle those timeouts.