- Python implementation of REST API described here:
Python | rt |
---|---|
2.7 | < 2.0.0 |
>= 3.5, <3.7 | >= 2.0.0, < 3.0.0 |
>= 3.7 | >= 3.0.0, < 3.1.0 |
>= 3.8 | >= 3.0.0 |
- ℹ️ Note:
Please note that starting with the major release of v3.0.0, this library requires Python version >= 3.8. See the Python version compatibility table above for more detailed information.
- ⚡ Note:
As of version 3.1.0, this library is async compatible. Usage:
import rt.rest2 import httpx tracker = rt.rest2.AsyncRt('http://localhost/rt/REST/2.0/', http_auth=httpx.BasicAuth('root', 'password'))
⚠️ Warning:Though version 3.x still supports RT REST API version 1, it contains minor breaking changes. Please see the changelog in the documentation for details.
- This module uses following Python modules:
- requests (http://docs.python-requests.org/)
- requests-toolbelt (https://pypi.org/project/requests-toolbelt/)
- typing-extensions (depending on python version)
https://python-rt.readthedocs.io/en/latest/
Install the python-rt package using:
pip install rt
This module is distributed under the terms of GNU General Public Licence v3 and was developed by CZ.NIC Labs - research and development department of CZ.NIC association - top level domain registry for .CZ. Copy of the GNU General Public License is distributed along with this module.
An example is worth a thousand words:
>>> import rt.rest2
>>> import httpx
>>> tracker = rt.rest2.Rt('http://localhost/rt/REST/2.0/', http_auth=httpx.BasicAuth('root', 'password'))
>>> map(lambda x: x['id'], tracker.search(Queue='helpdesk', Status='open'))
['1', '2', '10', '15']
>>> tracker.create_ticket(queue='helpdesk', \
... subject='Coffee (important)', content='Help I Ran Out of Coffee!')
19
>>> tracker.edit_ticket(19, Requestor='[email protected]')
True
>>> tracker.reply(19, content='Do you know Starbucks?')
True
Get the last important updates from a specific queue that have been updated recently:
>>> import datetime
>>> import base64
>>> import rt.rest2
>>> import httpx
>>> tracker = rt.rest2.Rt('http://localhost/rt/REST/2.0/', http_auth=httpx.BasicAuth('root', 'password'))
>>> fifteen_minutes_ago = str(datetime.datetime.now() - datetime.timedelta(minutes=15))
>>> tickets = tracker.last_updated(since=fifteen_minutes_ago)
>>> for ticket in tickets:
>>> id = ticket['id']
>>> history = tracker.get_ticket_history(id)
>>> last_update = list(reversed([h for h in history if h['Type'] in ('Correspond', 'Comment')]))
>>> hid = tracker.get_transaction(last_update[0]['id'] if last_update else history[0]['id'])
>>>
>>> attachment_id = None
>>> for k in hid['_hyperlinks']:
>>> if k['ref'] == 'attachment':
>>> attachment_id = k['_url'].rsplit('/', 1)[1]
>>> break
>>>
>>> if attachment_id is not None:
>>> attachment = c.get_attachment(attachment_id)
>>> if attachment['Content'] is not None:
>>> content = base64.b64decode(attachment['Content']).decode()
>>> print(content)
Please use docstrings to see how to use different functions. They are written in ReStructuredText. You can also generate HTML documentation by running make html
in doc directory (Sphinx required).
- Project site, issue tracking and git repository: