Skip to content

fstolba/python-freshdesk

 
 

Repository files navigation

python-freshdesk

A library for the Freshdesk helpdesk system for Python 2.7 and 3.

Currently it only supports the following API features:

Build Status Coverage Status

Installation

The easiest way to install is from PyPi inside a virtualenv:

  1. Create the virtualenv (Python 3!) and activate it:

    $ virtualenv -p python3 cool_app
    $ cd cool_app && source bin/activate
    
  2. Install from PyPi:

    $ pip install python-freshdesk
    
  3. Optionally, run the test suite:

    $ pip install nose
    $ nosetests
    

Usage

Please note the domain and API key are not real and the example will not work without changing these.

>>> from freshdesk.api import API
>>> a = API('company.freshdesk.com', 'q8dnkjaS554Aol21dmnas9d92')

The API class provides access to all the methods exposed by the Freshdesk API.

Tickets

The Ticket API is accessed by using the methods assigned to the a.tickets instance. Tickets are loaded as instances of the freshdesk.models.Ticket class, and can be iterated over:

>>> a.tickets.list_open_tickets()
[<Ticket 'New ticket'>, <Ticket 'Some tests should be created'>, <Ticket 'Library needs to be uploaded to PyPi'>]
>>> a.tickets.list_deleted_tickets()
[<Ticket 'This is a sample ticket'>]

To see which attributes were loaded for a ticket:

>>> ticket = a.tickets.get_ticket(4)
>>> repr(ticket)
"<Ticket 'I keep typing Freskdesk instead of Freshdesk!>"
>>> ticket._keys
set([u'status', u'source_name', u'ticket_type', u'updated_at', ...])

Attributes are automatically converted to native Python objects where appropriate:

>>> a.tickets.list_open_tickets()[0].created_at
datetime.datetime(2014, 12, 5, 14, 7, 44)

Or converted from indexes to their descriptions:

>>> ticket.priority
'medium'
>>> ticket.status
'closed'
>>> ticket.source
'phone'

Viewing comments on a ticket are as simple as looking at the Ticket.comments list:

>>> ticket.comments
[<Comment for <Ticket 'Some tests should be created'>>]
>>> ticket.comments[0]
'We could use Travis CI'

The original comment (called "description" in Freshdesk) is available on the Ticket instance:

>>> ticket.description
'nose is a good suite'

Contacts/Users

Freshdesk mixes up the naming of contacts and users, depending on whether they are an agent or not. python-freshdesk simply calls them all contacts and are represented as Contact instances:

>>> repr(a.contacts.get_contact('1234'))
"<Contact 'Rachel'>"

Timesheets

You can view all timesheets:

>>> a.timesheets.get_all_timesheets()
[<Timesheet Entry 1>, <Timesheet Entry 2, ...]

Or filter by ticket number:

>>> a.timesheets.get_timesheet_by_ticket(4)
[<Timesheet Entry 7>]

About

An API for the Freshdesk helpdesk

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 99.6%
  • Shell 0.4%