deskapi is a Python wrapper around the Desk.com REST API. It provides Python wrappers for articles, topics, and translations. deskapi is compatible with Python 2.6, 2.7, and 3.3.
deskapi is installable from PyPI with easy_install
or pip.
$ pip install deskapi
This will download the latest release, along with requests, which it depends on.
Access to the Desk API is managed through a DeskSession
object.
To instantiate a session, you'll need a sitename and authentication
information. If your Desk.com site is http://example.desk.com, your
site name will be example
. Authentication information is any valid
Requests auth object. The simplest thing to provide is a username
and password. For example:
>>> from deskapi.models import DeskApi2 >>> session = DeskApi2( ... sitename='testing', ... auth=('[email protected]', '53kr17') ... )
Once you have a session ID, you can retrieve a list of Articles:
>>> articles = session.articles()
Article fields map to Python properties:
>>> article = articles[0] >>> str(article.subject) 'Subject 1' >>> article.in_support_center True
deskapi models the information available from Desk API as a set of
"collections" and "objects". The articles()
method on
DeskSesssion
returns a collection. Collections can be iterated
over, and support indexed access. A collection can create new members
in itself.
Each member of a collection is a Desk Object. Desk Objects support property access to their fields, as well as updating those fields.
You can create new members of a collection by calling the create
method on it, passing in fields as keyword arguments.
>>> new_article = articles.create( ... title='New Article', ... body='Some content.', ... )
Articles are accessible via the articles()
method on the
DeskSession
.
>>> articles = session.articles()
Topics are accessible via the topics()
method on the DeskSession
.
Translations are accessible via the translations
property of
Article objects. The translations collection is slightly different
than other collections. Instead of allowing indexed access, it acts
like a dict
, keyed by locale:
>>> translations = article.translations >>> len(translations) 2 >>> str(translations['es'].subject) 'Tema de Ayuda'
You can make changes to an object and save those back to Desk. Calling
.save()
will return the saved instance.
>>> article.body = 'Test Content' >>> article.save() # doctest: +ELLIPSIS <deskapi.models.DeskObject object at ...>
Alternately you can use the update
method to update the
information in Desk without updating the local Python object. The
following is equivalent to the save
example:
>>> article = article.update(body='Test Content')
Both save
and update
return the updated object.
Made available under a BSD license; see LICENSE for details.