Usage

Initialisation

To use whispyr in a project you need to have valid whispir.io credentials (username, password and API key):

from whispyr import Whispir

TEST_USERNAME = 'U53RN4M3'
TEST_PASSWORD = 'P4ZZW0RD'
TEST_API_KEY = 'V4L1D4P1K3Y'

whispir = Whispir(TEST_USERNAME, TEST_PASSWORD, TEST_API_KEY)

Available resources

Instance of class Whispir contains all available resources (workspaces, messages, templates, response rules and etc, you can find more on official whispir API documentaion page https://whispir.github.io/api) as its members:

>>> whispir.workspaces
<whispyr.whispyr.Workspaces object at 0x10f1c2eb8>
>>> whispir.messages
<whispyr.whispyr.Messages object at 0x10f1c2e80>
...

Resources in plural form are collections which provide an access to containers. For example workspaces is a workspace resource and it provides CRUD functionality for workspaces.

Collections actions

Each collection has create, show, list, update and delete functions to work with objects. All passed arguments passed as is to json encoder. Library doesn’t perform any checks or validations, which means that you need to know required parameters and their format before you can call any of mentioned actions.

create

create makes a POST request for a given resource:

name = 'whispyr tests'
new_workspace = whispir.workspaces.create(projectName=name, status='A')

returned object is a container for a created resource. For this example it’s an instance of whispyr.Workspace:

from whispyr import Workspace
assert isinstance(workspace, Workspace)

All containers are dictionary like objects which wraps response from whispir.io API and provides an access to other resources available under some particular instance of an entity.

show

show makes a GET request for a given resource with a provided ID:

workspace = whispir.workspaces.show(new_workspace['id'])
assert isinstance(workspace, Workspace)
assert 'id' in workspace
assert 'projectName' in workspace

list

list makes a GET request for a given resource to return all available objects (library takes care about pagination):

for workspace in whispir.workspaces.list():
    assert isinstance(workspace, Workspace)
    assert 'id' in workspace
    assert 'projectName' in workspace

update

update makes a PUT request for a given resource with a provided ID to update/edit a resource with specified parameters:

whispir.contacts.update(
    contact_id,
    firstName='John',
    lastName='Wick',
    timezone='Australia/Melbourne',
    workCountry='Australia'
)

delete

delete makes a DELETE request for a given resource with a provided ID:

whispir.contacts.delete(contact['id'])

Container resources

Some containers (such as whispyr.Workspace and whispyr.Message) might provide an access to some collections.

Workspace

You might find it useful to limit the work to some workspace (sandbox in test env for instance) and do not put all objects in a global space:

project_name = 'whispyr tests'
workspace = next(ws for ws in whispir.workspaces.list()
                 if ws['projectName'] == 'sandbox')
for contact in workspace.contacts.list():
    print(contact['firstName'])

Alternatively, if you know workspace ID:

workspace = whispir.workspaces.Workspace(id='C3A1B60DEED39BB3')

Message

Message container provides an access to all message’s resources such as message statuses and responses:

message = workspace.messages.send(to=contact['mri'],
                                  subject='whispyr test',
                                  body='test message, please disregard')
for status in message.statuses.list():
    for category in status['categories']:
        print('{}: {}'.format(category['name'], category['recipientCount']))