django-helpdesk
django-helpdesk copied to clipboard
Issue tracker integration support
I would like to be able to integrate Django Helpdesk with an issue tracker in order to auto-generate incidents/tasks and correspond from within that issue tracker. The best way to do this would be to add bi-directional integration hook support where you can define the issue tracker API endpoint Django Helpdesk hits (and how it should format the data), and an API endpoint on Django Helpdesk that can take data as provided by the issue tracker.
For example: I would like to integrate Phabricator Maniphest tasks into Django Helpdesk (similar to how Sentry does it here). I'd like to take it further such that it not only generates Maniphest tasks, but also allows for bi-directional communication within that task (updates to the Django ticket are reflected in the associated Maniphest task and vice-versa).
To do this, I would tell Django Helpdesk to connect to a Phabricator Conduit endpoint to create Maniphest tasks, and also configure a Phabricator Herald event to send Phabricator events to Django Helpdesk. Phabricator uses PHID
identifiers, so Django Helpdesk would need to store an integration's task/issue identifier in order to retain proper correlation.
So.. how could I begin? I took a brief look at the Django Helpdesk code but didn't find anything that exists to support this, so some sort of integration framework needs defined first. To support specific integrations, I suppose a "translation" config would be simplest (e.g. integration "Foo" sends JSON issues[0].user.email which is provided by Django.email, and Django will sent its Django.email as JSON payload issue.user.email to the "Foo" API endpoint of "/blah/api").
Thoughts or suggestions?
django-helpdesk
used to have an API but it was home-grown and not a great solution. We removed it from recent versions of helpdesk
. I believe the plan is to add django-rest-framework
(http://www.django-rest-framework.org/) support for a standard JSON API but this work hasn't been completed yet.
See #198