DoneDone Classic

Developer’s API 2.0

Introduction

We offer a RESTful API that allows you to work with DoneDone data for your own applications. All methods from the API use either the GET, POST, PUT, or DELETE verbs and return standard JSON-serialized objects. We’ve provided sample responses for each method described below.

Your access to data through the API is identical to your access to data within the DoneDone application. For example, if you are an administrator, you can view your account’s companies and people. Otherwise, you’ll receive a 403 Forbidden HTTP status code and message. Similarly, you have the exact same access to projects and issues over the API as you do within the DoneDone application.

Important note: Our deprecated API documentation is still available.

Methods

All URLs for the requests outlined below begin with: https://{subdomain}.mydonedone.com/issuetracker/api/v2. You must use the HTTP verbs specified before each relative URL as well.

Important note: All projects and issues you have access to are available via this API. By comparison, our deprecated API allows you to enable and disable acccess on a per-project basis.

Authentication

We support HTTP Basic authentication to access the API. All requests go over SSL, so your credentials are safe.

When making any calls to the API, provide your username and API token (or password) via the HTTP Basic authentication header, in the form: Authorization: Basic {XXXXXX} where {XXXXXX} is your Base64-encoded username:apitoken or username:password. The API token is available on your DoneDone View Profile page under the API Token section.

Rate limiting

You can make up to 500 requests to the API per account per 30 minutes. If you exceed the rate limit, all API responses will return a 409 Conflict HTTP status code and message. When you receive this response, check the Retry-After header to see how many seconds you have to wait until you are permitted to make requests again.

Responses

All responses will contain JSON-encoded data, with the response content type set to application/json.

Success Responses

200 OK – The requested data or a success message with relevant details on POST and PUT requests will be provided as JSON encoded data described above.

Error Responses

Any request may respond with the following errors, each of which also provides some additional details (if any) as a JSON object with a message attribute.

400 Bad Request – You are missing a required parameter or sending an invalid value for a parameter (an integer where a date was expected, for example). Check what you’re sending to the API compared to what’s expected in this documentation.

401 Unauthorized – You did not authenticate properly and need to provide correct credentials via the basic authentication header.

402 Payment Required – Your account is currently suspended due to either the end of your trial or an overdue invoice.

403 Forbidden – You’re authenticated, but you are not authorized to perform the request.

404 Not Found – The requested resource couldn’t be found. Check that the URL you are calling is correct.

409 Conflict – You’ve made too many requests to the same resource. You can make up to 500 API requests per account per 30 minutes. When you receive this response, check the Retry-After header for how many seconds you have to wait until you are permitted to make requests again.

410 Gone – The issue you are requesting was deleted by a user.

500 Internal Error – Something unexpected occurred. Contact our support for help!

API Wrappers

We currently have an API wrapper for C# available on Github. If you would like to contribute to creating a wrapper for another language, please let us know!

Companies & People

Use the methods below to access companies and people.

Get all companies

GET /companies.json will return a list of company ids and names in the account. The authenticated user must be an administrator or owner of the account. Use the query parameter load_with_people=true to also append the details of each employee from Get Company Details.

Sample response:

[
 {
  "id": 123,
  "name": "Acme Corporation"
 },
 {
  "id": 456,
  "name": "We Are Mammoth, Inc."
 }
]

Get company details

GET /companies/123.json will return the company with id = 123, along with all of its people. Included on the company object are the number of active users (e.g. admins or people on projects), which is limited based on your account’s current pricing tier. The authenticated user must be an administrator or owner of the account.

Sample response:

{
 "id": 123,
 "name": "Acme Corporation",
 "number_of_active_users": 2,
 "people": [
  {
   "id": 88,
   "first_name": "John",
   "last_name": "Doe",
   "account_email": "john.doe@acme.com",
   "mobile_phone": "555-1234",
   "office_phone": "555-1235",
   "fax": "555-1236",
   "avatar_url": "https://www.someimage.com/some-image.png"
  },
  {
   "id": 89,
   "first_name": "Jane",
   "last_name": "Smith",
   "account_email": "jane.smith@acme.com",
   "mobile_phone": "",
   "office_phone": "",
   "fax": "",
   "avatar_url": ""
  }
 ]
}

Get person

GET /people/88.json will return the person with id = 88. The authenticated user must be an administrator or owner of the account.

Sample response:

{
 "id": 88,
 "first_name": "John", 
 "last_name": "Doe",
 "profile_email": "john.doe@homeaddress.com",
 "account_email": "john.doe@acme.com",
 "mobile_phone": "555-1234",
 "office_phone": "555-1235",
 "fax": "555-1236",
 "avatar_url": "https://www.someimage.com/some-image.png",
 "company_id": 123,
 "company_name": "Acme Corporation"
}

Get authenticated user

GET /people/me.json will return the authenticated user data.

Sample response: See Get person.

Create company

POST /companies.json will create a company with the parameters below. The authenticated user must be an administrator or owner of the account.

Request parameters:

  • company_name: Required string. The name of the company.

Sample Response:

{
 "id": 123,
 "name": "Acme Corporation"
}

Update company name

PUT /companies/123.json will update the company with id = 123 with the parameters below. The authenticated user must be an administrator or owner of the account.

Request parameters:

  • company_name: Required string. The name of the company.

Sample response:

{
 "id": 123,
 "name": "Acme Corporation"
}

Projects

Use the methods below to create, access and modify projects.

Get all projects

GET /projects.json will return a list of project ids and names that the authenticated user has access to in the account.

Sample response:

[
 {
  "id": 74,
  "title": "Acme Corporation Website Redesign"
 },
 {
  "id": 213,
  "title": "Widgets Mobile Application"
 }
]

Get project

GET /projects/74.json will return the project with id = 74. The project contains a list of all users with access to the project, along with the subset of those users who are admins for the project. The authenticated user must have access to the project.

Sample response:

[
 {
  "id": 74,
  "title": "Acme Corporation Website Redesign",
  "total_issues_in_project": 100,
  "release_builds_enabled": true,
  "tags": [
    {
      "id": 13,
      "name": "database",
      "number_of_issues": 3
    },
    {
      "id": 32,
      "name": "javascript",
      "number_of_issues": 8
    }
  ],
  "users": [
    {
      "id": 88,
      "name": "John Doe"
    },
    {
      "id": 89,
      "name": "Jane Smith"
    }
  ],
  "admins": [
    {
      "id": 89,
      "name": "Jane Smith"
    }
  ]
 }
]

Get people in project

GET /projects/74/people.json will return all people with access to the project with id = 74. The access_level determines the role a user plays in a project (either “normal” or “admin”). The authenticated user must have access to the project.

Sample response:

[
 {
  "id": 88,
  "name": "John Doe",
  "account_email": "john.doe@acme.com",
  "access_level": "normal"
 },
 {
  "id": 89,
  "name": "Jane Smith",
  "account_email": "jane.smith@acme.com",
  "access_level": "admin"
 }
]

Create project

POST /projects.json will create a project with the parameters below. The authenticated user must be an administrator or owner of the account.

Request parameters:

  • title: Required string. The title of the project.
  • user_ids: Optional comma-delimited string of user ids of people who should have access to the project. See Get All Companies and Get Company Details for allowable values. Note: the owner of the account and all administrators will always have access to all projects.
  • user_ids_as_admin: Optional comma-delimited string of user ids of people who should have administrative access to the project. The ids in this string must also be included in the user_ids string, or else they will be skipped. See Get All Companies and Get Company Details for allowable values. Note: the owner of the account and all administrators will always have administrative access to all projects.

Sample Response: Returns the created project detail. See Get Project.

Update project

PUT /projects/74.json will update the project where id = 74 with the parameters below. The authenticated user must be an administrator or owner of the account.

Request parameters:

  • title: Optional string. The title of the project.
  • user_ids: Optional comma-delimited string of user ids of people who should have access to the project. See Get All Companies and Get Company Details for allowable values. Explicitly pass a null or empty string value to remove all existing users. Note: the owner of the account and all administrators will always have access to all projects.
  • user_ids_as_admin: Optional comma-delimited string of user ids of people who should have administrative access to the project. The ids in this string must also be included in the user_ids string, or else they will be skipped. See Get All Companies and Get Company Details for allowable values. Note: the owner of the account and all administrators will always have administrative access to all projects.

Sample Response: Returns the updated project detail. See Get Project.

Archive/Delete Project

DELETE /projects/74.json will archive or delete the project where id = 74 with the parameters below. The authenticated user must be an administrator or owner of the account.

Request parameters:

  • archive: Optional boolean indicating whether the project should be archived. Defaults to true. When value is false, the project will be irreversibly deleted.

Sample Response:

{
 "success": true
}

Issues

Use the methods below to create, access and modify issues.

Create issue

POST /projects/74/issues.json will create an issue in project where id = 74 with the parameters below.

Request parameters:

  • title: Required string. The title for the issue.
  • description: Optional Markdown-based string.
  • attachments: Optional file upload(s) in multipart MIME format.
  • due_date: Optional date. Most standard formats accepted.
  • tags: Optional comma-delimited string of tags for the issue, such as tag1,tag2,tag3.
  • priority_level_id: Required. The id of the priority level. Use Priority Levels for allowable values.
  • fixer_id: Required. The id of the user to assign as Fixer. Use Available Reassignees for allowable values.
  • tester_id: Required. The id of the user to assign as Tester. Use Available Reassignees for allowable ids.
  • user_ids_to_cc: Optional comma-delimited string of user ids to add to the CC notification list. Use Available Reassignees for allowable values.
  • suppress_notifications: Optional boolean indicating whether user notifications should be suppressed for this action. Defaults to false.

Sample Response: Returns the created issue detail. See Get Issue.

Get issue

GET /projects/74/issues/8.json will return the issue where order_number = 8 in project where id = 74. It will also return a list of allowable actions (such as whether the user can reassign fixer, tester, priority, etc.)

Sample response:

{
 "title": "Page does not work in Netscape Navigator 3.1.1",
 "order_number": 8,
 "description": "The whole page looks wonky!",
 "description_markdown": "The whole page looks wonky!",
 "due_date": "/Date(1352858090320)/",
 "created_on": "/Date(1352351481160)/",
 "priority": {
  "id": 2,
  "name": "Medium"
 },
 "project": {
  "id": 74,
  "name": "Acme Corporate Website Redesign"
 },
 "status": {
  "id": 22,
  "name": "Fixed"
 },
 "tester": {
  "id": 88,
  "name": "John Doe",
  "avatar_url": "https://www.someimage.com/some-image.png"
 },
 "fixer": {
  "id": 89,
  "name": "Jane Smith",
  "avatar_url": "https://www.someimage.com/some-image.png"
 },
 "creator": {
  "id": 88,
  "name": "John Doe",
  "avatar_url": "https://www.someimage.com/some-image.png"
 },
 "ccd_users": [
  {
   "id": 90,
   "name": "Bill Jones"
  },
  {
   "id": 91,
   "name": "Sally Johnson"
  }
 ],
 "tags": [
  {
   "id": 12234,
   "name": "netscape" 
  }
 ],
 "attachments": [
  {
   "id": 15222,
   "path": "https://myattachments.com/some-image.gif"
  },
  {
   "id": 15223,
   "path": "https://myattachments.com/some-image.png"
  }
 ],
 "histories": [
  {
   "id": 1690495,
   "created_on": "/Date(1352351481160)/",
   "action": "John Doe created the issue.",
   "description": "Assigned to *Jane Smith* as the fixer, and to *John Doe* as the tester. This issue is marked as *Medium*.",
   "attachments": [
    {
     "id": 16855,
     "path": "https://myattachments.com/some-image.gif"
    }
   ],
   "creator": {
    "id": 88,
    "name": "John Doe",
    "avatar_url": "https://www.someimage.com/some-image.png"
   }
  },
  {
   "id": 1693089,
   "created_on": "/Date(1352415830993)/",
   "action": "Jane Smith changed the status to Ready for Next Release.",
   "description": "Thanks John, Sorry about that! I've removed all semblance of modern web design to support this browser.Thanks!",
   "attachments": [],
   "creator": {
    "id": 89,
    "name": "Bill Jones",
    "avatar_url": "https://www.someimage.com/some-image.png"
   }
  }
 ],
 "is_public_issue": false,
 "public_issue_reply_to_address":"",
 "public_issue_cc_addresses":"",
 "duplicate_of_issue_info":{
   "project_id":74,
   "order_number":7
 },
 "allowable_actions":{  
   "reassign_tester":true,
   "reassign_fixer":true,
   "add_comment":true,
   "update_status":true,
   "update_priority":true,
   "edit_issue":true,
   "confirm_fixed":false,
   "confirm_is_issue":false,
   "confirm_is_reproducible":false,
   "provide_missing_information":false
  }
}

Update issue

PUT /projects/74/issues/8.json will update the issue where order_number = 8 in project where id = 74 with the parameters below.

Request parameters:

  • title: Optional string. The title for the issue.
  • description: Optional Markdown-based string.
  • priority_level_id: Optional integer. The id of the priority level. Use Priority Levels for allowable values.
  • state_id: Optional integer. The id of the issue status. Use Available Statuses for allowable values.
  • fixer_id: Optional integer. The id of the user to assign as Fixer. Use Available Reassignees for allowable values.
  • tester_id: Optional integer. The id of the user to assign as Tester. Use Available Reassignees for allowable values.
  • due_date: Optional date. Most standard formats accepted. Explicitly pass a null or empty string value to remove an existing due date.
  • tags: Optional comma-delimited string of tags for the issue, such as tag1,tag2,tag3. Explicitly pass a null or empty string value to remove all existing tags.
  • comment: Optional Markdown-based string.
  • duplicate_of_issue_order_number: Optional order number of the issue that this issue duplicates. The issue must be in the same project as the duplicated issue. Explicitly pass a “0” to remove an existing “duplicate of issue order number”. Use Duplicate Issue Candidates for possible duplicate issue candidates.
  • attachments: Optional file upload(s) in multipart MIME format.
  • user_ids_to_cc: Optional comma-delimited string of user ids to add to the CC notification list. Use Available Reassignees for allowable values.
  • new_project_id: Optional integer. The id of the project to which the issue should be moved. Use All Projects for allowable values.
  • removed_attachment_ids: Optional comma-delimited string of attachment ids to remove from the issue. Use Get issue for attachment ids.
  • suppress_notifications: Optional boolean indicating whether user notifications should be suppressed for this action. Defaults to false.

Sample Response: Returns the updated issue detail. See Get Issue.

Add comment to issue

POST /projects/74/issues/8/comments.json will add a comment to the issue where order_number = 8 in project where id = 74 with the parameters below:

Request parameters:

  • comment: Optional Markdown-based string.
  • attachments: Optional file upload(s) in multipart MIME format.

Sample Response: Returns the updated issue detail. See Get Issue.

Update issue status

PUT /projects/74/issues/8/status.json will update the status of the issue where order_number = 8 in project where id = 74 with the parameters below:

Request parameters:

  • new_status_id: Required. The id of the issue status. Use Available Statuses for allowable values.
  • duplicate_of_issue_order_number: Optional. The order number of the issue in the project that this issue duplicates. Use Duplicate Issue Candidates for possible duplicate issue candidates.
  • comment: Optional Markdown-based string.
  • attachments: Optional file upload(s) in multipart MIME format.

Sample Response: Returns the updated issue detail. See Get Issue.

Update issue fixer

PUT /projects/74/issues/8/fixer.json will update the fixer of the issue where order_number = 8 in project where id = 74 with the parameters below:

Request parameters:

  • new_fixer_id: Required. The id of the new fixer. Use Available Reassignees for allowable ids.
  • comment: Optional Markdown-based string.
  • attachments: Optional file upload(s) in multipart MIME format.

Sample Response: Returns the updated issue detail. See Get Issue.

Update issue tester

PUT /projects/74/issues/8/tester.json will update the tester of the issue where order_number = 8 in project where id = 74 with the parameters below:

Request parameters:

  • new_tester_id: Required. The id of the new tester. Use Available Reassignees for allowable ids.
  • comment: Optional Markdown-based string.
  • attachments: Optional file upload(s) in multipart MIME format.

Sample Response: Returns the updated issue detail. See Get Issue.

Update issue priority level

PUT /projects/74/issues/8/priority_level.json will update the priority level of the issue where order_number = 8 in project where id = 74 with the parameters below:

Request parameters:

  • new_priority_level_id: Required. The id of the new priority level. Use Priority Levels for allowable values.
  • comment: Optional Markdown-based string.
  • attachments: Optional file upload(s) in multipart MIME format.

Sample Response: Returns the updated issue detail. See Get Issue.

Get available reassignees

GET /projects/74/issues/8/people/available_for_reassignment.json will return a list of people who can be cc’d or assigned as the fixer or tester to the issue where order_number = 8 in project where id = 74.

Sample response:

[
 {
  "id": 88,
  "name": "John Doe"
 },
 {
  "id": 89,
  "name": "Jane Smith"
 }
]

Get available statuses

GET /projects/74/issues/8/statuses/available_to_change_to.json will return a list of issue statuses the authenticated user may update the issue to where order_number = 8 in project where id = 74.

Sample response:

[
 {
  "id": 12,
  "name": "Open"
 },
 {
  "id": 13,
  "name": "In Progress"
 },
 {
  "id": 14,
  "name": "Not an Issue"
 }
]

Get duplicate issue candidates

GET /projects/74/issues/8/duplicate_issue_candidates.json will return a list of issues that this issue can be assigned as a duplicate of where order_number = 8 in project where id = 74. This essentially returns all issue titles and order numbers in the project (excluding the issue passed in the URL).

You can assign the issue as a duplicate issue by updating its status to “Duplicate Issue” either in Update issue status or in Update issue and by assigning the duplicate_of_issue_order_number parameter an order_number from the list of returned duplicate issue candidates.

Sample response:

[
 {
  "order_number": 165,
  "title": "My login is not working."
 },
 {
  "order_number": 177,
  "title": "Page not scrubbing HTML characters properly."
 },
 {
  "order_number": 178,
  "title": "The footer links are broken."
 }
]

Issue Lists

Use the following methods to retrieve filtered lists of issues.

Issues waiting on you

GET /issues/waiting_on_you.json will return all issues that are awaiting action by the authenticated user.

GET /projects/74/issues/waiting_on_you.json will return all issues that are awaiting action by the authenticated user for project where id = 74

Request parameters: See Issue List Request Parameters
Sample response: See Issue List Sample Response

Issues you're waiting on

GET /issues/youre_waiting_on.json will return all the authenticated user’s issues that are awaiting action by anyone other than the authenticated user.

GET /projects/74/issues/youre_waiting_on.json will return all the authenticated user’s issues that are awaiting action by anyone other than the authenticated user for the project where id = 74

Request parameters: See Issue List Request Parameters
Sample response: See Issue List Sample Response

Issues you're CC'd on

GET /issues/youre_ccd_on.json will return all issues that include the authenticated user in the CC notification list.

GET /projects/74/issues/youre_ccd_on.json will return all issues that include the authenticated user in the CC notification list for the project where id = 74

Request parameters: See Issue List Request Parameters
Sample response: See Issue List Sample Response

Your active issues

GET /issues/your_active.json will return all issues where the authenticated user is assigned as Fixer or Tester and the status is anything other than Closed, Fixed, Duplicate Issue, or On Hold.

GET /projects/74/issues/your_active.json will return all issues for the project where id = 74 where the authenticated user is assigned as Fixer or Tester and the status is anything other than Closed, Fixed, Duplicate Issue, or On Hold.

Request parameters: See Issue List Request Parameters
Sample response: See Issue List Sample Response

All your issues

GET /issues/all_yours.json will return all issues where the authenticated user is CC’d on, or assigned as Fixer or Tester.

GET /projects/74/issues/all_yours.json will return all issues for the project where id = 74 where the authenticated user is CC’d on, or assigned as Fixer or Tester.

Request parameters: See Issue List Request Parameters
Sample response: See Issue List Sample Response

All active issues

GET /issues/all_active.json will return all issues where the status is anything other than Closed, Fixed, Duplicate Issue, or On Hold.

GET /projects/74/issues/all_active.json will return all issues for the project where id = 74 where the status is anything other than Closed, Fixed, Duplicate Issue, or On Hold.

Request parameters: See Issue List Request Parameters
Sample response: See Issue List Sample Response

All inactive issues

GET /issues/all_inactive.json will return all issues where the status is Closed, Fixed, or Duplicate Issue.

GET /projects/74/issues/all_inactive.json will return all issues for the project where id = 74 where the status is Closed, Fixed, or Duplicate Issue.

Request parameters: See Issue List Request Parameters
Sample response: See Issue List Sample Response

All issues on hold

GET /issues/all_on_hold.json will return all issues where the status is On Hold.

GET /projects/74/issues/all_on_hold.json will return all issues for the project where id = 74 where the status is On Hold.

Request parameters: See Issue List Request Parameters
Sample response: See Issue List Sample Response

All issues

GET /issues/all.json will return all issues on projects the authenticated user has access to.

GET /projects/74/issues/all.json will return all issues for the project where id = 74.

Request parameters: See Issue List Request Parameters
Sample response: See Issue List Sample Response

Issues by custom filter

GET /issues/by_global_custom_filter/13.json will return all issues where custom_filter_id = 13. The authenticated user must have access to the filter – use Get global filters for allowable ids.

GET /projects/74/issues/by_custom_filter/13.json will return all issues for the project where id = 74 and custom_filter_id = 13. The authenticated user must have access to the filter – use Get project filters for allowable ids.

Request parameters: see Issue List Request Parameters
Sample response: see Issue List Sample Response

Request parameters

All Issue List methods accept the following request parameters:

  • tag_ids: Optional comma-delimited list of tag ids. Only issues matching at least one of the tag ids will be returned. You can retrieve tag ids on a per-project basis by using Get Project.
  • tag_ids_not_matching: Optional comma-delimited list of tag ids. Only issues not matching at least one of the tag ids will be returned. You can retrieve tag ids on a per-project basis by using Get Project.
  • start_due_date: Optional date. Only issues with a due date after the start due date will be returned.
  • end_due_date: Optional date. Only issues with a due date before the end due date will be returned.
  • sort: Optional id of the direction the issues should be sorted. See Sort Types for allowable values. Default is 5 (Last updated date, newest first).
  • issue_creation_type: Optional id of the creation type of the issues. Use Creation Types for allowable values. Default is 0 (All types).
  • skip: Optional number of issues to skip in the result set. Default is 0.
  • take: Optional number of issues to return in the result set. Default is 50; maximum is 500.

Sample response

All Issue List methods return the same JSON response:

{
  "total_issues": 2,
  "issues": [
    {
      "title": "Page does not work in Netscape Navigator 3.1.1",
      "order_number": 8,
      "project": {
        "id": 74,
        "name": "Acme Corporate Website Redesign"
      },
      "created_on": "/Date(1352351481160)/",
      "last_updated_on": "/Date(1352351481160)/",
      "last_updater": {
        "id": 88,
        "name": "John Doe"
      }
      "last_viewed_on": "/Date(1352351481160)/",
      "tester": {
        "id": 88,
        "name": "John Doe"
      },
      "fixer": {
        "id": 89,
        "name": "Jane Smith"
      },
      "creator": {
        "id": 90,
        "name": "Bob Jones"
      },
      "priority": {
        "id": 2,
        "name": "Medium"
      },
      "status": {
        "id": 22,
        "name": "Fixed"
      },
      "due_date": "/Date(1352351481160)/",
      "is_public_issue": false
    },
    {
      "title": "Error on login screen",
      "order_number": 15,
      "project": {
        "id": 74,
        "name": "Acme Corporate Website Redesign"
      },
      "created_on": "/Date(1352351481160)/",
      "last_updated_on": "/Date(1352351481160)/",
      "last_updater": {
        "id": 89,
        "name": "Jane Smith"
      }
      "last_viewed_on": "/Date(1352351481160)/",
      "tester": {
        "id": 89,
        "name": "Jane Smith"
      },
      "fixer": {
        "id": 88,
        "name": "John Doe"
      },
      "creator": {
        "id": 90,
        "name": "Bob Jones"
      },
      "priority": {
        "id": 4,
        "name": "Critical"
      },
      "status": {
        "id": 22,
        "name": "Fixed"
      },
      "due_date": "/Date(1352351481160)/",
      "is_public_issue": false,
      "tags":[  
        {  
          "id":13,
          "name":"database"
        },
        {  
          "id":32,
          "name":"javascript"
        }
      ]
    }
  ]
}

Activity

Use the following methods to retrieve filtered lists of issue activity.

Issues waiting on you

GET /activity/issues_waiting_on_you.json will return all activity for issues that are awaiting action by the authenticated user.

GET /projects/74/activity/issues_waiting_on_you.json will return all activity for issues that are awaiting action by the authenticated user for the project where id = 74

Request parameters: see Activity Request Parameters
Sample response: see Activity Sample Response

Issues you're waiting on

GET /activity/issues_youre_waiting_on.json will return all activity for the authenticated user’s issues that are awaiting action by anyone other than the authenticated user.

GET /projects/74/activity/issues_youre_waiting_on.json will return all activity for the authenticated user’s issues that are awaiting action by anyone other than the authenticated user for the project where id = 74

Request parameters: see Activity Request Parameters
Sample response: see Activity Sample Response

Issues you're CC'd on

GET /activity/issues_youre_ccd_on.json will return all activity for issues that include the authenticated user in the CC notification list.

GET /projects/74/activity/issues_youre_ccd_on.json will return all activity for issues that include the authenticated user in the CC notification list for the project where id = 74

Request parameters: see Activity Request Parameters
Sample response: see Activity Sample Response

Your active issues

GET /activity/your_active_issues.json will return all activity for issues where the authenticated user is assigned as Fixer or Tester and the status is anything other than Closed, Fixed, Duplicate Issue, or On Hold.

GET /projects/74/activity/your_active_issues.json will return all activity for issues for the project where id = 74 where the authenticated user is assigned as Fixer or Tester and the status is anything other than Closed, Fixed, Duplicate Issue, or On Hold.

Request parameters: see Activity Request Parameters
Sample response: see Activity Sample Response

All your issues

GET /activity/all_your_issues.json will return all activity for issues where the authenticated user is CC’d on, or assigned as Fixer or Tester.

GET /projects/74/activity/all_your_issues.json will return all activity for issues for the project where id = 74 where the authenticated user is CC’d on, or assigned as Fixer or Tester.

Request parameters: see Activity Request Parameters
Sample response: see Activity Sample Response

All active issues

GET /activity/all_active_issues.json will return all activity for issues where the status is anything other than Closed, Fixed, Duplicate Issue, or On Hold.

GET /projects/74/activity/all_active_issues.json will return all activity for issues for the project where id = 74 where the status is anything other than Closed, Fixed, Duplicate Issue, or On Hold.

Request parameters: see Activity Request Parameters
Sample response: see Activity Sample Response

All inactive issues

GET /activity/all_inactive_issues.json will return all activity for issues where the status is Closed, Fixed, or Duplicate Issue.

GET /projects/74/activity/all_inactive_issues.json will return all activity for issues for the project where id = 74 where the status is Closed, Fixed, or Duplicate Issue.

Request parameters: see Activity Request Parameters
Sample response: see Activity Sample Response

All issues on hold

GET /activity/all_on_hold_issues.json will return all activity for issues where the status is On Hold.

GET /projects/74/activity/all_on_hold_issues.json will return all activity for issues for the project where id = 74 where the status is On Hold.

Request parameters: see Activity Request Parameters
Sample response: see Activity Sample Response

All issues

GET /activity/all_issues.json will return all activity for issues on projects the authenticated user has access to.

GET /projects/74/activity/all_issues.json will return all activity for issues for project where id = 74.

Request parameters: see Activity Request Parameters
Sample response: see Activity Sample Response

Issues by custom filter

GET /activity/issues_by_global_custom_filter/13.json will return all activity for issues where custom_filter_id = 13. The authenticated user must have access to the filter – use Get global filters for allowable ids.

GET /projects/74/activity/issues_by_custom_filter/13.json will return all activity for issues for project where id = 74 and custom_filter_id = 13. The authenticated user must have access to the filter – use Get project filters for allowable ids.

Request parameters: see Activity Request Parameters
Sample response: see Activity Sample Response

Request parameters

All Activity methods accept the same request parameters:

  • tag_ids: Optional comma-delimited list of tag ids. Only issues matching at least one of the tag ids will be returned. You can retrieve tag ids on a per-project basis by using Get Project.
  • tag_ids_not_matching: Optional comma-delimited list of tag ids. Only issues not matching at least one of the tag ids will be returned. You can retrieve tag ids on a per-project basis by using Get Project.
  • start_due_date: Optional date. Only issues with a due date after the start due date will be returned.
  • end_due_date: Optional date. Only issues with a due date before the end due date will be returned.
  • from_date: Optional date/time. Only activity that occurred after this date will return. If no value is passed, the date will default to 12:00:00am of the current day. If a value is passed, the until_date parameter is also expected.
  • until_date: Optional date/time. Only activity that occurred before this date will return. If no value is passed, the date will default to 11:59:59pm of the current day. If a value is passed, the from_date parameter is also expected.
  • hours_from_utc: Optional positive or negative integer representing the hours away from Universal Coordinated Time. Default is 0. The from_date and until_date for activity retrieved will be based off the converted local time.
  • issue_creation_type: Optional id of the creation type of the issues. Use Creation Types for allowable values. Default is 0 (All types).
  • skip: Optional number of issues to skip in the result set. Default is 0.
  • take: Optional number of issues to return in the result set. Default is 50; maximum is 500.

Sample response

All Activity methods return the same JSON data:

[
  {
    "title": "#8: Page does not work in Netscape Navigator 3.1.1",
    "order_number": 8,
    "project": {
        "id": 74,
        "name": "Acme Corporate Website Redesign"
      },
    "created_on": "/Date(1352351481160)/",
    "creator": {
        "id": 88,
        "name": "John Doe",
        "avatar_url": "https://www.someimage.com/some-image.png"
      },
    "description": "Assigned to *Jane Smith* as the fixer, and to *John Doe* as the tester. This issue is marked as *Medium*.",
    "action": "John Doe created an issue.",
    "attachments": [
      {
        "id": 15222,
        "path": "https://myattachments.com/some-image.gif"
      },
      {
        "id": 15223,
        "path": "https://myattachments.com/some-image.png"
      }
    ]
  },
  {
    "title": "#15: Error on login screen",
    "order_number": 15,
    "project": {
        "id": 74,
        "name": "Acme Corporate Website Redesign"
      },
    "created_on": "/Date(1352351481160)/",
    "creator": {
        "id": 89,
        "name": "Jane Smith",
        "avatar_url": "https://www.someimage.com/some-image.png"
      },
    "description": "I am looking into this issue now.",
    "action": "Jane Smith added a comment.",
    "attachments": []
  }
]

Tags

Use the methods below to access global tags

Get tags in account

GET /tags.json returns all tags on all projects a user has access to in their account.

[
  {
    "id": 13,
    "name": "database",
    "number_of_issues": 3
  },
  {
    "id": 32,
    "name": "javascript",
    "number_of_issues": 8
  }
]

Custom Filters

Use the following methods to get custom filters at the global or project level.

Get global filters

GET /global_custom_filters.json returns all global filters (used for retrieving global issue lists and activity).

[
  {
    "id": 1,
    "value": "Critical issues"
  },
  {
    "id": 2,
    "value": "In-progress issues for John"
  },
  {
    "id": 3,
    "value": "Issues created in the past week"
  }
]

Get project filters

GET /projects/74/custom_filters.json returns all custom filters for project where id = 74 (used for retrieving issue lists and activity).

[
  {
    "id": 4,
    "value": "Acme Project closed issues"
  },
  {
    "id": 5,
    "value": "Issues tagged with 'ie6' in Acme Project"
  },
  {
    "id": 6,
    "value": "Jane's Acme Project issues"
  }
]

Release Builds

Use the methods below to create and access release builds.

Get release builds for project

GET /projects/74/release_builds.json returns all release builds in the project with id = 74.

[
 {
  "id": 4948,
  "title": "Release Build for January 27, 2014",
  "created_on": "/Date(1390870135790)/",
  "description": "Fixed up several bugs",
  "relative_url": "/issuetracker/projects/74/issues_by_release_build/4948",
  "order_numbers": [
   412,
   413
  ]
 },
 {
  "id": 3357,
  "title": "Release Build for Friday, February 24, 2012",
  "created_on": "/Date(1330117364753)/",
  "description": "",
  "relative_url": "/issuetracker/projects/74/issues_by_release_build/3357",
  "order_numbers": [
   380,
   403
  ]
 }
]

Create release build for project

POST /projects/74/release_builds.json creates a new release build in the project with id = 74.

Request parameters:

  • order_numbers: Required string. Comma-delimited issue order numbers to be included in the build. Issues must belong to the same project as the release build, and must have a current status of “Ready for Next Release”. See Get Release Build Info to get allowable order numbers.
  • title: Required string. The title for the release build.
  • description: Required string. A description of the release build.
  • email_body: Optional string. An email message to be sent to users.
  • tags: Optional comma-delimited string of tags to add to each issue in the release build.
  • user_ids_to_cc: Optional string. Comma-delimited ids of users who should receive an email notification. See Get People in Project for allowable ids.

Sample response: Returns all release builds in the project. See Get Release Builds for Project.

Get Release Build Info

GET /projects/74/release_builds/info.json returns the list of order numbers which are “Ready for Next Release” in the project with id = 74.

 {  
  "id": 74,
  "title": "Acme Corporation Website Redesign",
  "order_numbers_ready_for_next_release": [
   112,
   113
  ]
 }

Priority Levels

GET /priority_levels.json will return all available priority levels for an issue.

[
 {
  "id": 1,
  "name": "Low"
 },
 {
  "id": 2,
  "name": "Medium"
 },
 {
  "id": 3,
  "name": "High"
 },
 {
  "id": 4,
  "name": "Critical"
 }
]

Creation Types

GET /issue_creation_types.json will return all issue creation types.

[
 {
  "id": 0,
  "name": "all"
 },
 {
  "id": 1,
  "name": "private only"
 },
 {
  "id": 2,
  "name": "public only"
 }
]

Sort Types

GET /issue_sort_types.json will return all issue list sort types.

[
 {
  "id": 1,
  "name": "order number"
 },
 {
  "id": 2,
  "name": "project title"
 },
 {
  "id": 3,
  "name": "priority"
 },
 {
  "id": 4,
  "name": "status"
 },
 {
  "id": 5,
  "name": "updated"
 },
 {
  "id": 6,
  "name": "fixer"
 },
 {
  "id": 7,
  "name": "tester"
 },
 {
  "id": 8,
  "name": "due date"
 },
 {
  "id": 9,
  "name": "created"
 },
 {
  "id": 10,
  "name": "created (oldest first)"
 },
 {
  "id": 11,
  "name": "updated (oldest first)"
 },
 {
  "id": 12,
  "name": "issue title"
 }
]