Time Tracking

Introduction

Each Ticket can have any number of TimeEntries.

There are two reports which are used to analyze TimeEntries and progress of a Project: Overall Progress and Time Invested.

TimeEntries

All TimeEntries for a Ticket.

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

Report: Time Invested

A report showing how much time was spent in either an Account or a Project with the specified criteria. Query parameters can be passed via the query string parameters or in the request body.

URL:
/api/v1/account/time_invested[GET]
/api/v1/projects/{id}/time_invested[GET]
Response Formats:
XML, JSON, CSV
Parameters (via query string or request body):
<request>
  <!-- specifies the object type by which to group the report (can also be empty to receive a flat list of TimeEntries) -->
  <group-by> [person, ticket, priority, component, version, severity, milestone, due_on, reporter, assignee, status, resolution] </group-by>
  <!-- specifies the inclusive start date of the report -->
  <start-date>2007/1/1</start-date>
  <!-- specifies the inclusive end date of the report -->
  <end-date>2007/12/31</end-date>
</request>
Response Body:
<time-invested>
  <group-by> [person, ticket, priority, component, version, severity, milestone, due_on, reporter, assignee, status, resolution] </group-by>
  <start-date> </start-date>
  <end-date> </end-date>
  <groups>
    <group>
      <title> </title>
      <total> <!-- total hours for this group --> </total>
      <time-entries>
        <time-entry>
          <created-at type="datetime"> </created-at>
          <date type="date"> </date>
          <description> </description>
          <hours type="float"> </hours>
          <id type="integer"> </id>
          <person-id type="integer"> </person-id>
          <ticket-id type="integer"> </ticket-id>
          <updated-at type="datetime"> </updated-at>
        </time-entry>
      </time-entries>
    </group>
  </groups>
</time-invested>
Example:
curl -i -u username:password -X GET \\
  -H 'Accept: application/xml' \\
  'https://mysubdomain.unfuddle.com/api/v1/account/time_invested.xml?group_by=person&start_date=2007/11/1&end_date=2007/11/30'

Report: Overall Progress

A report showing the overall progress of a Project and its respective milestones.

URL:
/api/v1/projects/{id}/overall_progress[GET]
Response Formats:
XML, JSON
Response Body:
<overall-progress>
  <entire-project>
    <tickets-active> </tickets-active>
    <tickets-closed> </tickets-closed>
    <hours-estimate-current> </hours-estimate-current>
    <hours-estimate-current-active> </hours-estimate-current-active>
    <hours-actual> </hours-actual>
    <hours-actual-active> </hours-actual-active>
    <hours-actual-closed> </hours-actual-closed>
  </entire-project>
  <milestones>
    <milestone>
      <milestone-id> </milestone-id>
      <tickets-active> </tickets-active>
      <tickets-closed> </tickets-closed>
      <hours-estimate-current> </hours-estimate-current>
      <hours-estimate-current-active> </hours-estimate-current-active>
      <hours-actual> </hours-actual>
      <hours-actual-active> </hours-actual-active>
      <hours-actual-closed> </hours-actual-closed>
    </milestone>
    ...
  </milestones>
</overall-progress>
Example:
curl -i -u username:password -X GET \\
  -H 'Accept: application/xml' \\
  https://mysubdomain.unfuddle.com/api/v1/project/43/overall_progress.xml