Unfuddle API: Tickets

Introduction top

  • Each Project can have any number of Tickets.
  • Each Ticket can have any number of Attachments. See Attachments for more information.
  • Each Ticket can have any number of Comments. See Comments for more information.
  • Each Ticket can have any number of Time Entries. See Time Tracking for more information.
  • Each Ticket can have any number of Subscriptions. A Subscription represents the desire of a particular Person to deliberately be notified of changes to a Ticket. The Ticket reporter and current assignee are automatically considered subscribers without being a part of this collection.

Tickets top

The collection represents all Tickets within a Project.

URL:
/api/v1/projects/{id}/tickets
[GET, POST]
/api/v1/projects/{id}/tickets/{id}
[GET, PUT, DELETE]
/api/v1/projects/{id}/tickets/by_number/{number}
[GET]
Response Formats:
XML, JSON, ICS
Request/Response Body:
See Ticket Data Model
Notes:
Please note that the "by_number" URL is meant as a convenience only. If you wish to POST or DELETE to a Ticket, or access nested resources such as Comments or Attachments, you must use the URL based on the Ticket ID.
Example:
curl -i -u username:password -X GET \
  -H 'Accept: application/xml' \
  'http://mysubdomain.unfuddle.com/api/v1/projects/9812/tickets/98833.xml'

TicketAssociations top

All TicketAssociations for a Ticket.

URL:
/api/v1/projects/{id}/tickets/{id}/ticket_associations
[GET, POST]
/api/v1/projects/{id}/tickets/{id}/ticket_associations/{id}
[GET, PUT, DELETE]
Response Formats:
XML, JSON
Request/Response Body:
See TicketAssociation Data Model
Example:
curl -i -u username:password -X GET \
  -H 'Accept: application/xml' \
  'http://mysubdomain.unfuddle.com/api/v1/projects/9812/tickets/98833/ticket_associations.xml'

Subscriptions top

The collection represents all Subscriptions for a Ticket.

URL:
/api/v1/projects/{id}/tickets/{id}/subscriptions
[GET, POST]
/api/v1/projects/{id}/tickets/{id}/subscriptions/{id}
[GET, PUT, DELETE]
Response Formats:
XML, JSON
Request/Response Body:
See Subscription Data Model
Example:
curl -i -u username:password -X GET \
  -H 'Accept: application/xml' \
  'http://mysubdomain.unfuddle.com/api/v1/projects/9812/tickets/98833/subscriptions.xml'

Subscribe/Unsubscribe top

These two resources exist as a convenience. Performing an HTML PUT to either of these URLs will subscribe or unsubscribe the requesting Person from the Ticket.

URLs:
/api/v1/projects/{id}/tickets/{id}/subscribe
[PUT]
/api/v1/projects/{id}/tickets/{id}/unsubscribe
[PUT]
Example:
curl -i -u username:password -X GET \
  -H 'Accept: application/xml' \
  'http://mysubdomain.unfuddle.com/api/v1/projects/9812/tickets/98833/subscribe.xml'

TicketReports top

The collection represents all TicketReports for either an Account or a Project. Note that the instance of a TicketReport does not include its result set, but rather represents the TicketReport as a concept.

URLs:
/api/v1/ticket_reports
[GET, POST]
/api/v1/projects/{id}/ticket_reports
[GET, POST]
/api/v1/ticket_reports/{id}
[GET, PUT, DELETE]
/api/v1/projects/{id}/ticket_reports/{id}
[GET, PUT, DELETE]
Response Formats:
XML, JSON
Request/Response Body:
See TicketReport Data Model
Example:
curl -i -u username:password -X GET \
  -H 'Accept: application/xml' \
  'http://mysubdomain.unfuddle.com/api/v1/projects/9812/ticket_reports/6732.xml'

TicketReport Generation top

A TicketReport, including its output.

URLs:
/api/v1/ticket_reports/{id}/generate
[GET]
/api/v1/projects/{id}/ticket_reports/{id}/generate
[GET]
Response Formats:
XML, JSON, RSS, ICS, CSV
Request/Response Body:
For XML, see TicketReport Data Model
Example:
curl -i -u username:password -X GET \
  -H 'Accept: application/xml' \
  'http://mysubdomain.unfuddle.com/api/v1/projects/9812/ticket_reports/6732/generate.xml'

Dynamic Reporting top

TicketReports can also be generated dynamically, removing the need for a saved report.

URLs:
/api/v1/ticket_reports/dynamic
[GET]
/api/v1/projects/{id}/ticket_reports/dynamic
[GET]
Response Formats:
XML, JSON, RSS, ICS, CSV
Parameters (via query string or request body):
<request>
  <!-- specifies the title of the report -->
  <title>Dynamic Ticket Report</title>
  <!-- specifies how the resulting tickets should be grouped -->
  <group-by>milestone</group-by>
  <!-- specifies the field by which to sort, if any -->
  <sort-by>number</sort-by>
  <!-- specifies the sort direction -->
  <sort-direction>ASC</sort-direction>
  <!-- specifies the fields for the report (not required, only for completeness) -->
  <fields-string>number,summary,assignee</fields-string>
  <!-- specifies the conditions for the report -->
  <conditions-string>assignee-eq-current,status-eq-closed,milestone-eq-34584</conditions-string>
</request>
Response Body:
For XML, see TicketReport Data Model
Example:
curl -i -u username:password -X GET \
  -H 'Accept: application/xml' \
  'http://mysubdomain.unfuddle.com/api/v1/projects/9812/ticket_reports/dynamic.xml?title=A+Dynamic+Report&conditions_string=assignee-eq-current,status-neq-closed,status-neq-resolved'