Jump to ▼

       
 

Bugly API Documentation

This API is currently in Beta. We consider the API documented below pretty stable and fully usable, but on the off-chance that we need to make a breaking change in the coming weeks, we are sticking the Beta label on it for now. Another reason we are using the Beta label is that the API docs and the Ruby library aren’t available on GitHub yet.

This is the API documentation for Bugly. If you find any errors, omissions or have any other ideas on how to improve these docs, please tell us about it.

Our API design and this documentation is heavily inspired by the excellent Stripe API, with kind permission.

Feedback

We welcome your feedback on our API and these docs. Please go here if you would like to send us a message.

 

Introduction

The Bugly API is based on REST. This means that it has predictable, resource-oriented URLs, it uses HTTP verbs to differentiate between actions, and it uses HTTP response codes for API errors. Authentication is done using HTTP Basic Access Authentication or by putting a token in a HTTP header. All requests return JSON.

The requests in the sidebar actually work. You just need to type in your ACCOUNT_NAME and API_TOKEN at the top of the page, and all the examples will be updated to include them.

 

Authentication

Authentication is done by providing one of your API tokens in the request. You can manage your API tokens from your profile page. You can have multiple API tokens active at one time, with different privileges associated with each.

There are two ways to provide the API token.

  1. HTTP Basic Auth. Provide your API token as the basic auth username. You do not need to provide a password. This is the method that is used throughout the documentation.
  2. X-BuglyToken. Provide your API token in a HTTP header named X-BuglyToken.

Remember to keep your API tokens secret!. They are powerful things, giving anyone who has them a lot of privileges, so if you suspect that one of your tokens has been compromised you should delete it immediately and generate a new one.

All API requests must be made over HTTPS. Calls made over plain HTTP will fail. You must authenticate for all requests.

curl https://.bug.ly/v1/issues \ -u {API_TOKEN}:

curl uses the -u flag to pass basic auth credentials (adding a colon after your API key will prevent it from asking you for a password).

Note: By typing in your account name and an API token in the input fields at the top of the page, all examples can be pasted into a terminal and run directly. These values are not stored anywhere and not sent over the network, so it is quite safe.

 

Errors

Bugly uses HTTP response codes to indicate whether an API request succeeded or failed. In general, codes in the 2xx range indicate success, codes in the 4xx range indicate an error that resulted from the provided information (e.g. a required parameter was missing, an invalid value was supplied, etc.), and codes in the 5xx range indicate an error on Bugly’s end.

For errors that don’t map cleanly onto HTTP response codes we return a 402 error code.

All errors return JSON with a type (either invalid_request_error or api_error) and message describing the particular problem.

Attributes
type
A code for the type of error returned (invalid_request_error, api_error) Invalid request errors means that your request has invalid parameters. API errors cover any other type of problem (e.g. a temporary problem with Bugly's servers). Requests that return api_error should probably be retried later, since these should be infrequent and short-lived.
message
A user-friendly message describing the error
param
optional
The parameter the error relates to if the error is parameter-specific. You can use this to display a message near the correct form field, for example.
HTTP Status Code Summary
  • 200 OK - The request was processed successfully.
  • 201 Created - The resource was created successfully.
  • 400 Bad Request - One or more parameters were invalid.
  • 401 Unauthorized - No valid API key was provided.
  • 402 Request Failed - Valid parameters, but the request failed.
  • 404 Not Found - Item doesn't exist.
  • 500-504 Server errors - something went wrong on Bugly's end.
Errors
Invalid Request Errors Type: invalid_request_error API Errors Type: api_error
 

Issues

Issues are the most fundamental objects in Bugly, representing an issue/bug/ticket. You can also get associated comments, prerequisites, changesets, labels etc. Issues can be created, retrieved, updated, deleted and listed from the API.

 

Creating a new Issue

Creates a new Issue object.

Arguments
title
string required
A short title for the issue. Will appear in all issue listings.
project_id
integer required
The numerical ID of the project this issue belongs to.
body
string optional, default is null
A text describing the issue in detail.
milestone_id
integer optional
The numerical ID of the milestone this issue belongs to. If nothing is specified, the default milestone for the project will be used.
assigned_to
string optional
The alphanumerical ID of the user which this issue should be assigned to. If nothing is specified, the default assignee for the project will be used.
priority_id
integer optional
The numerical ID of the priority for this issue. If nothing is specified, Important will be used.
labels
string optional, default is null
A comma-separated list of labels to apply to the issue, for example email, dogfood.
Returns

Returns an issue object. An error will be returned if something goes wrong.

POST https://.bug.ly/v1/issues curl https://.bug.ly/v1/issues \ -u {API_TOKEN}: \ -d "title=The signup form needs padding" \ -d "body=We need to add some padding." \ -d project_id=1 \ -d milestone_id=1 { "id": 1, "object": "issue", "title": "The signup form needs padding", "body": "We need to add some padding.", "resolved_by": null, "closed_by": null, "import_id": null, "import_msg": null, "imported_id": null, "imported_id2": null, "assigned_at": null, "created_by": { "id": "2f9efb6cad9baa3dfa4c904202wefde5", "full_name": "Don Johnson" }, "assigned_to": { "id": "69c28548da2c71d1a545941f13a2f94", "full_name": "Unassigned" }, "project": { "name": "The Next Big Thing", "id": 1 }, "milestone": { "name": "Release 2012-10", "id": 151 }, "status": { "name": "Open", "id": 200 }, "priority": { "name": "Important", "id": 800 }, "created_at": "2012-02-13T17:38:26+01:00", "updated_at": "2012-02-13T17:38:26+01:00" } { "error": { "code": "invalid_request_error", "message": "Invalid or missing milestone" } }
 

Retrieving an Issue

Retrieves the details of an issue that has previously been created. Supply the ID for the issue that was returned from your previous request, and Bugly will return the corresponding issue details. The same information is returned when creating an issue.

Arguments
id
integer required
The ID of the issue to be retrieved.
Returns

Returns an issue object if a valid ID was provided, and returns an error otherwise.

GET https://.bug.ly/v1/issues/{ISSUE_ID} curl https://.bug.ly/v1/issues/1 \ -u {API_TOKEN}: { "id": 1, "object": "issue", "title": "The signup form needs padding", "body": "We need to add some padding.", "resolved_by": null, "closed_by": null, "import_id": null, "import_msg": null, "imported_id": null, "imported_id2": null, "assigned_at": null, "created_by": { "id": "2f9efb6cad9baa3dfa4c904202wefde5", "full_name": "Don Johnson" }, "assigned_to": { "id": "69c28548da2c71d1a545941f13a2f94", "full_name": "Unassigned" }, "project": { "name": "The Next Big Thing", "id": 1 }, "milestone": { "name": "Release 2012-10", "id": 151 }, "status": { "name": "Open", "id": 200 }, "priority": { "name": "Important", "id": 800 }, "created_at": "2012-02-13T17:38:26+01:00", "updated_at": "2012-02-13T17:38:26+01:00" } { "error": { "code": "invalid_request_error", "message": "Invalid issue ID: 1" } }
 

Updating an Issue

Updates the specified issue by setting the values of the parameters passed. Any parameters not provided will be left unchanged. For example, if you pass the title parameter, the title is changed but nothing else.

This request accepts mostly the same arguments as the issue creation call. The main difference is that you can change the status and/or add a comment.

Arguments
comment
string optional
A comment which will be associated with the update.
title
string optional
A short title for the issue. Will appear in all issue listings.
body
string optional
A text describing the issue in detail.
project_id
integer optional
The numerical ID of the project this issue belongs to.
milestone_id
integer optional
The numerical ID of the milestone this issue belongs to.
assigned_to
string optional
The alphanumerical ID of the user which this issue should be assigned to.
priority_id
integer optional
The numerical ID of the priority for this issue.
status_id
integer optional
The numerical ID of the status for this issue.
labels
string optional
A comma-separated list of the labels that are associated with the issue, for example email, dogfood. Note that this argument sets the list of labels, it does not just add the labels specified. Specify an empty labels argument to remove all labels from the issue.
Returns

Returns the issue object. An error will be returned if something goes wrong.

PUT https://.bug.ly/v1/issues/{ISSUE_ID} curl https://.bug.ly/v1/issues/1 \ -X PUT \ -u {API_TOKEN}: \ -d "title=New title" { "id": 1, "object": "issue", "title": "New title", "body": "We need to add some padding.", "resolved_by": null, "closed_by": null, "import_id": null, "import_msg": null, "imported_id": null, "imported_id2": null, "assigned_at": null, "created_by": { "id": "2f9efb6cad9baa3dfa4c904202wefde5", "full_name": "Don Johnson" }, "assigned_to": { "id": "69c28548da2c71d1a545941f13a2f94", "full_name": "Unassigned" }, "project": { "name": "The Next Big Thing", "id": 1 }, "milestone": { "name": "Release 2012-10", "id": 151 }, "status": { "name": "Open", "id": 200 }, "priority": { "name": "Important", "id": 800 }, "created_at": "2012-02-13T17:38:26+01:00", "updated_at": "2012-02-13T17:38:26+01:00" } { "error": { "code": "invalid_request_error", "message": "No such issue: 1" } }
 

Deleting an Issue

Permanently deletes an Issue. It cannot be undone.

Arguments
id
integer required
The ID of the issue to be deleted.
Returns

Returns an object with a deleted parameter on success. If the issue ID does not exist, an error is returned.

DELETE https://.bug.ly/v1/issues/{ISSUE_ID} curl https://.bug.ly/v1/issues/1 \ -u {API_TOKEN}: \ -X DELETE { "deleted": true, "id": 1 } { "error": { "code": "invalid_request_error", "message": "No such issue: 1" } }
 

List all Issues

Returns a list of issues you've previously created. The issues are returned in sorted order, with the most recent issues appearing first.

This method supports no filtering. If you need to filter what issues are returned, use the Search method documented below.

Arguments
count
integer optional, default is 10
A limit on the number of issues to be returned. Count can range between 1 and 100 issues.
offset
integer optional, default is 0
An offset into your issues array. The API will return the requested number of issues starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count issues, starting at index offset. Each entry in the array is a separate issue object. If no more issues are available, the resulting array will be empty.

GET https://.bug.ly/v1/issues curl https://.bug.ly/v1/issues?count=3 \ -u {API_TOKEN}: { data: [ { "id": 1, "object": "issue", "title": "The signup form needs padding", "body": "We need to add some padding.", "resolved_by": null, "closed_by": null, "import_id": null, "import_msg": null, "imported_id": null, "imported_id2": null, "assigned_at": null, "created_by": { "id": "2f9efb6cad9baa3dfa4c904202wefde5", "full_name": "Don Johnson" }, "assigned_to": { "id": "69c28548da2c71d1a545941f13a2f94", "full_name": "Unassigned" }, "project": { "name": "The Next Big Thing", "id": 1 }, "milestone": { "name": "Release 2012-10", "id": 151 }, "status": { "name": "Open", "id": 200 }, "priority": { "name": "Important", "id": 800 }, "created_at": "2012-02-13T17:38:26+01:00", "updated_at": "2012-02-13T17:38:26+01:00" }, {...}, {...} ] }
 

Searching for Issues

Finds issues matching the search string.

Arguments
q
string required
A search string in the proper format.
count
integer optional, default is 10
A limit on the number of issues to be returned. Count can range between 1 and 100 issues.
offset
integer optional, default is 0
An offset into your issues array. The API will return the requested number of issues starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count issues, starting at index offset. Each entry in the array is a separate issue object. If no more issues are available, the resulting array will be empty. This request should never return an error.

GET https://.bug.ly/v1/issues/search?q={SEARCH_STRING} curl https://.bug.ly/v1/issues/search?signup+form \ -u {API_TOKEN}: { data: [ { "id": 1, "object": "issue", "title": "The signup form needs padding", "body": "We need to add some padding.", "resolved_by": null, "closed_by": null, "import_id": null, "import_msg": null, "imported_id": null, "imported_id2": null, "assigned_at": null, "created_by": { "id": "2f9efb6cad9baa3dfa4c904202wefde5", "full_name": "Don Johnson" }, "assigned_to": { "id": "69c28548da2c71d1a545941f13a2f94", "full_name": "Unassigned" }, "project": { "name": "The Next Big Thing", "id": 1 }, "milestone": { "name": "Release 2012-10", "id": 151 }, "status": { "name": "Open", "id": 200 }, "priority": { "name": "Important", "id": 800 }, "created_at": "2012-02-13T17:38:26+01:00", "updated_at": "2012-02-13T17:38:26+01:00" }, {...}, {...} ] }
 

List Comments for an Issue

Returns a list of comments for a given issue. The comments are returned in sorted order, with the most recent comments appearing first.

Arguments
count
integer optional, default is 10
A limit on the number of comments to be returned. Count can range between 1 and 100.
offset
integer optional, default is 0
An offset into your comments array. The API will return the requested number of comments starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count comments, starting at index offset. Each entry in the array is a separate comment object. If no more comments are available, the resulting array will be empty.

GET https://.bug.ly/v1/issues/{ISSUE_ID}/comments curl https://.bug.ly/v1/issues/1/comments?count=3 \ -u {API_TOKEN}: { data: [ { "id": 84150, "object": "comment", "issue_id": 1, "post_id": null, "body": "Is this still true?", "commenter": { "id": "2f9efb612239baa3dfa4c904202eafde5eeb1179a", "full_name": "Don Johnson" }, "parent_id": null, "visible": true, "anonymous": false, "promoted": false, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2011-12-30T12:15:33+01:00", "created_at": "2011-12-30T12:15:33+01:00" }, {...}, {...} ] }
 

List Watchers for an Issue

Returns a list of watchers—users who have registered to be notified of changes—for a given issue. The watchers are returned in sorted order, with the most recently added appearing first.

Arguments
count
integer optional, default is 10
A limit on the number of watchers to be returned. Count can range between 1 and 100.
offset
integer optional, default is 0
An offset into your watchers array. The API will return the requested number of watchers starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count watchers, starting at index offset. Each entry in the array is a separate user object. If no more watchers are available, the resulting array will be empty.

GET https://.bug.ly/v1/issues/{ISSUE_ID}/watchers curl https://.bug.ly/v1/issues/1/watchers?count=3 \ -u {API_TOKEN}: { data: [ { "id": "2f9efb234d9baa3df", "object": "user", "full_name": "Don Johnson", "email": "don_johnson@example.com", "url": "http://donjohnson.example.com/", "username": "donj", "timezone": "Stockholm", "enabled": true, "is_admin": true, "is_regular": false, "is_virtual": false, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2011-10-08T19:53:08+02:00", "created_at": "2009-06-02T19:39:59+02:00" }, {...}, {...} ] }
 

List Labels for an Issue

Returns a list of labels for a given issue.

Arguments
count
integer optional, default is 10
A limit on the number of issues to be returned. Count can range between 1 and 100 issues.
offset
integer optional, default is 0
An offset into your issues array. The API will return the requested number of issues starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count labels, starting at index offset. Each entry in the array is a separate label object. If no more labels are available, the resulting array will be empty.

GET https://.bug.ly/v1/issues/{ISSUE_ID}/labels curl https://.bug.ly/v1/issues/1/labels?count=3 \ -u {API_TOKEN}: { data: [ { "id": 1, "object": "label", "name": "dogfood", "color": "d3e6b8", "text_color": "5e6652", "project": { "name": "Inbox", "id": 1 }, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2010-02-22T21:08:56+01:00", "created_at": "2010-02-22T21:08:56+01:00" }, {...}, {...} ] }
 

List Prerequisites for an Issue

Returns a list of prerequisites for an issue - that is, issues that must be closed before you can close the given issue. The prerequisites are returned in sorted order, with the most recent prerequisites appearing first.

Arguments
count
integer optional, default is 10
A limit on the number of prerequisites to be returned. Count can range between 1 and 100.
offset
integer optional, default is 0
An offset into your prerequisites array. The API will return the requested number of prerequisites starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count prerequisites, starting at index offset. Each entry in the array is a separate issue object. If no more prerequisites are available, the resulting array will be empty.

GET https://.bug.ly/v1/issues/{ISSUE_ID}/prerequisites curl https://.bug.ly/v1/issues/1/prerequisites?count=3 \ -u {API_TOKEN}: { data: [ { "id": 1, "object": "issue", "title": "The signup form needs padding", "body": "We need to add some padding.", "resolved_by": null, "closed_by": null, "import_id": null, "import_msg": null, "imported_id": null, "imported_id2": null, "assigned_at": null, "created_by": { "id": "2f9efb6cad9baa3dfa4c904202wefde5", "full_name": "Don Johnson" }, "assigned_to": { "id": "69c28548da2c71d1a545941f13a2f94", "full_name": "Unassigned" }, "project": { "name": "The Next Big Thing", "id": 1 }, "milestone": { "name": "Release 2012-10", "id": 151 }, "status": { "name": "Open", "id": 200 }, "priority": { "name": "Important", "id": 800 }, "created_at": "2012-02-13T17:38:26+01:00", "updated_at": "2012-02-13T17:38:26+01:00" }, {...}, {...} ] }
 

List Dependents for an Issue

Returns a list of dependents for a given issue - that is, issues that cannot be closed before the given issue is closed. The prerequisites are returned in sorted order, with the most recent prerequisites appearing first.

Arguments
count
integer optional, default is 10
A limit on the number of dependents to be returned. Count can range between 1 and 100.
offset
integer optional, default is 0
An offset into your dependents array. The API will return the requested number of dependets starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count dependents, starting at index offset. Each entry in the array is a separate issue object. If no more dependents are available, the resulting array will be empty.

GET https://.bug.ly/v1/issues/{ISSUE_ID}/dependents curl https://.bug.ly/v1/issues/1/dependents?count=3 \ -u {API_TOKEN}: { data: [ { "id": 1, "object": "issue", "title": "The signup form needs padding", "body": "We need to add some padding.", "resolved_by": null, "closed_by": null, "import_id": null, "import_msg": null, "imported_id": null, "imported_id2": null, "assigned_at": null, "created_by": { "id": "2f9efb6cad9baa3dfa4c904202wefde5", "full_name": "Don Johnson" }, "assigned_to": { "id": "69c28548da2c71d1a545941f13a2f94", "full_name": "Unassigned" }, "project": { "name": "The Next Big Thing", "id": 1 }, "milestone": { "name": "Release 2012-10", "id": 151 }, "status": { "name": "Open", "id": 200 }, "priority": { "name": "Important", "id": 800 }, "created_at": "2012-02-13T17:38:26+01:00", "updated_at": "2012-02-13T17:38:26+01:00" }, {...}, {...} ] }
 

List Duplicates of an Issue

Returns a list of duplicates of a given issue. The duplicates are returned in sorted order, with the most recent duplicates appearing first.

Arguments
count
integer optional, default is 10
A limit on the number of duplicates to be returned. Count can range between 1 and 100.
offset
integer optional, default is 0
An offset into your duplicates array. The API will return the requested number of duplicates starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count duplicates, starting at index offset. Each entry in the array is a separate issue object. If no more issues are available, the resulting array will be empty.

GET https://.bug.ly/v1/issues/{ISSUE_ID}/duplicates curl https://.bug.ly/v1/issues/1/duplicates?count=3 \ -u {API_TOKEN}: { data: [ { "id": 1, "object": "issue", "title": "The signup form needs padding", "body": "We need to add some padding.", "resolved_by": null, "closed_by": null, "import_id": null, "import_msg": null, "imported_id": null, "imported_id2": null, "assigned_at": null, "created_by": { "id": "2f9efb6cad9baa3dfa4c904202wefde5", "full_name": "Don Johnson" }, "assigned_to": { "id": "69c28548da2c71d1a545941f13a2f94", "full_name": "Unassigned" }, "project": { "name": "The Next Big Thing", "id": 1 }, "milestone": { "name": "Release 2012-10", "id": 151 }, "status": { "name": "Open", "id": 200 }, "priority": { "name": "Important", "id": 800 }, "created_at": "2012-02-13T17:38:26+01:00", "updated_at": "2012-02-13T17:38:26+01:00" }, {...}, {...} ] }
 

List Related Issues for an Issue

Returns a list of related issues for a given issue. The issues are returned in sorted order, with the most recent issues appearing first.

Arguments
count
integer optional, default is 10
A limit on the number of related issues to be returned. Count can range between 1 and 100.
offset
integer optional, default is 0
An offset into your related issues array. The API will return the requested number of issues starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count related issues, starting at index offset. Each entry in the array is a separate issue object. If no more related issues are available, the resulting array will be empty.

GET https://.bug.ly/v1/issues/{ISSUE_ID}/related curl https://.bug.ly/v1/issues/1/related?count=3 \ -u {API_TOKEN}: { data: [ { "id": 1, "object": "issue", "title": "The signup form needs padding", "body": "We need to add some padding.", "resolved_by": null, "closed_by": null, "import_id": null, "import_msg": null, "imported_id": null, "imported_id2": null, "assigned_at": null, "created_by": { "id": "2f9efb6cad9baa3dfa4c904202wefde5", "full_name": "Don Johnson" }, "assigned_to": { "id": "69c28548da2c71d1a545941f13a2f94", "full_name": "Unassigned" }, "project": { "name": "The Next Big Thing", "id": 1 }, "milestone": { "name": "Release 2012-10", "id": 151 }, "status": { "name": "Open", "id": 200 }, "priority": { "name": "Important", "id": 800 }, "created_at": "2012-02-13T17:38:26+01:00", "updated_at": "2012-02-13T17:38:26+01:00" }, {...}, {...} ] }
 

Projects

Issues are grouped into projects. The API allows you to create, delete, and update your projects. You can retrieve individual projects as well as a list of all projects.

 

Creating a New Project

Creates a new project object.

Arguments
name
string required
The name for this project, may be visible in issue listings.
description
string optional, default is null
A description for the project, which will be visible on the project details page.
enabled
boolean optional, default is true
Whether or not this project is enabled. Issues in disabled projects cannot be accessed.
default_priority_id
integer optional, default is null
The numerical ID of the default priority for this project. If no default is set, Important will be used as the default.
default_category_id
integer optional, default is null
The numerical ID of the default category for this project. If no default is set, no category will be set.
default_access_level
string optional, default is null
The textual label for the default access level for this project. If no default is set, users will be granted the Normal User access level unless overridden on the user object.
Returns

Returns a project object if the call succeeded. If an invalid category, priority, or access level is specified as the default, the call will return an error.

POST https://.bug.ly/v1/projects curl https://.bug.ly/v1/projects \ -u {API_TOKEN}: \ -d "name=Inbox" \ -d "description=The default project" { "id": 1, "object": "project", "enabled": true, "name": "Inbox", "description": "The default project.", "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2012-02-02T14:48:28+01:00", "created_at": "2012-02-02T14:48:28+01:00", "default_priority_id": null, "default_category_id": null, "default_access_level": 20000 } { "error": { "code": "invalid_request_error", "message": "Unknown priority ID specified: 123" } }
 

Retrieving a Project

Retrieves the details of an existing project. You need only supply the project ID that was returned when the project was created.

Arguments
id
integer required
The ID of the project to be retrieved.
Returns

Returns a project object if a valid ID was provided.

GET https://.bug.ly/v1/projects/{PROJECT_ID} curl https://.bug.ly/v1/projects/1 \ -u {API_TOKEN}: { "id": 1, "object": "project", "enabled": true, "name": "Inbox", "description": "The default project.", "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2012-02-02T14:48:28+01:00", "created_at": "2012-02-02T14:48:28+01:00", "default_priority_id": null, "default_category_id": null, "default_access_level": 20000 } { "error": { "code": "invalid_request_error", "message": "No such project: 1" } }
 

Updating a Project

Updates the specified project by setting the values of the parameters passed. Any parameters not provided will be left unchanged. For example, if you pass the name parameter, the name is changed but nothing else.

This request accepts the same arguments as the project creation call.

Arguments
name
string optional
The name for this project, may be visible in issue listings.
description
string optional
A description for the project, which will be visible on the project details page.
enabled
boolean optional
Whether or not this project is enabled. Issues in disabled projects cannot be accessed.
default_priority_id
integer optional
The numerical ID of the default priority for this project.
default_category_id
integer optional
The numerical ID of the default category for this project.
default_access_level
integer optional
The numerical ID of the default access level for this project.
Returns

Returns the project object if the call succeeded. If an invalid category, priority, or access level is specified as the default, the call will return an error.

PUT https://.bug.ly/v1/projects/{PROJECT_ID} curl https://.bug.ly/v1/projects/1 \ -X PUT \ -u {API_TOKEN}: \ -d "name=The new name" { "id": 1, "object": "project", "enabled": true, "name": "The new name", "description": "The default project.", "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2012-02-02T14:48:28+01:00", "created_at": "2012-02-02T14:48:28+01:00", "default_priority_id": null, "default_category_id": null, "default_access_level": 20000 } { "error": { "code": "invalid_request_error", "message": "No such project: 1" } }
 

Deleting a Project

Permanently deletes a project. It cannot be undone.

Arguments
id
integer required
The ID of the project to be deleted.
Returns

Returns an object with a deleted parameter on success. If the project id does not exist, an error is returned.

DELETE https://.bug.ly/v1/projects/{PROJECT_ID} curl https://.bug.ly/v1/projects/1 \ -u {API_TOKEN}: \ -X DELETE { "deleted": true, "id": 1 } { "error": { "code": "invalid_request_error", "message": "No such project: 1" } }
 

List all Projects

Returns a list of your projects. The projects are returned sorted by creation date, with the most recently created projects appearing first.

Arguments
count
integer optional, default is 10
A limit on the number of projects to be returned. Count can range between 1 and 100 projects.
offset
integer optional, default is 0
An offset into your project array. The API will return the requested number of projects starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count projects, starting at index offset. Each entry in the array is a separate project object. If no more projects are available, the resulting array will be empty. This request should never return an error.

GET https://.bug.ly/v1/projects curl https://.bug.ly/v1/projects \ -u {API_TOKEN}: { data: [ { "id": 1, "object": "project", "enabled": true, "name": "Inbox", "description": "The default project.", "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2012-02-02T14:48:28+01:00", "created_at": "2012-02-02T14:48:28+01:00", "default_priority_id": null, "default_category_id": null, "default_access_level": 20000 }, {...}, {...} ] }
 

List Issues for a Project

Returns a list of issues in the given project. The issues are returned in sorted order, with the most recent issues appearing first.

Arguments
count
integer optional, default is 10
A limit on the number of issues to be returned. Count can range between 1 and 100 issues.
offset
integer optional, default is 0
An offset into your issues array. The API will return the requested number of issues starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count issues, starting at index offset. Each entry in the array is a separate issue object. If no more issues are available, the resulting array will be empty.

GET https://.bug.ly/v1/projects/{PROJECT_ID}/issues curl https://.bug.ly/v1/projects/1/issues?count=3 \ -u {API_TOKEN}: { data: [ { "id": 1, "object": "issue", "title": "The signup form needs padding", "body": "We need to add some padding.", "resolved_by": null, "closed_by": null, "import_id": null, "import_msg": null, "imported_id": null, "imported_id2": null, "assigned_at": null, "created_by": { "id": "2f9efb6cad9baa3dfa4c904202wefde5", "full_name": "Don Johnson" }, "assigned_to": { "id": "69c28548da2c71d1a545941f13a2f94", "full_name": "Unassigned" }, "project": { "name": "The Next Big Thing", "id": 1 }, "milestone": { "name": "Release 2012-10", "id": 151 }, "status": { "name": "Open", "id": 200 }, "priority": { "name": "Important", "id": 800 }, "created_at": "2012-02-13T17:38:26+01:00", "updated_at": "2012-02-13T17:38:26+01:00" }, {...}, {...} ] }
 

List all Milestones for a Project

Returns a list of milestones for the given project.

Arguments
count
integer optional, default is 10
A limit on the number of milestones to be returned. Count can range between 1 and 100.
offset
integer optional, default is 0
An offset into your milestones array. The API will return the requested number of milestones starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count milestones, starting at index offset. Each entry in the array is a separate milestone object. If no more milestones are available, the resulting array will be empty.

GET https://.bug.ly/v1/projects/{PROJECT_ID}/milestones curl https://.bug.ly/v1/projects/1/milestones?count=3 \ -u {API_TOKEN}: { data: [ { "id": 1, "object": "milestone", "name": "Beta 1", "description": "Feature-complete and probably very buggy", "project": { "name": "The Next Big Thing", "id": 1 }, "start_at": null, "end_at": null, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2012-01-10T10:28:04+01:00", "created_at": "2012-01-10T10:28:04+01:00" }, {...}, {...} ] }
 

List all Categories for a Project

Returns a list of categories for the given project.

Arguments
count
integer optional, default is 10
A limit on the number of categories to be returned. Count can range between 1 and 100.
offset
integer optional, default is 0
An offset into your categories array. The API will return the requested number of categories starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count categories, starting at index offset. Each entry in the array is a separate category object. If no more categories are available, the resulting array will be empty.

GET https://.bug.ly/v1/projects/{PROJECT_ID}/categories curl https://.bug.ly/v1/projects/1/categories?count=3 \ -u {API_TOKEN}: { data: [ { "id": 1, "object": "category", "name": "Invoicing", "description": "", "project": { "name": "Inbox", "id": 1 }, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2011-04-17T08:59:06+02:00", "created_at": "2009-06-14T12:47:41+02:00" }, {...}, {...} ] }
 

Milestones

Issues are always associated with a milestone. Milestones can be account-wide or tied to a project. The API allows you to create, delete, and update your milestones. You can retrieve individual milestones as well as a list of all milestones.

 

Creating a New Milestone

Creates a new milestone object.

Arguments
name
string required
The name for this milestone, may be visible in issue listings.
description
string optional, default is null
A description for the milestone, which will be visible on the milestone details page.
project_id
integer optional, default is null
The numerical ID of the project that this milestone belongs to. If no project is set, the milestone will become an account-wide milestone.
start_at
datetime optional, default is null
The start date for this milestone.
end_at
datetime optional, default is null
The end date for this milestone.
Returns

Returns a milestone object if the call succeeded. If an invalid project ID is specified, the call will return an error.

POST https://.bug.ly/v1/milestones curl https://.bug.ly/v1/milestones \ -u {API_TOKEN}: \ -d "name=Beta 1" \ -d "description=Feature-complete and probably very buggy" \ -d project_id=1 { "id": 1, "object": "milestone", "name": "Beta 1", "description": "Feature-complete and probably very buggy", "project": { "name": "The Next Big Thing", "id": 1 }, "start_at": null, "end_at": null, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2012-01-10T10:28:04+01:00", "created_at": "2012-01-10T10:28:04+01:00" } { "error": { "code": "invalid_request_error", "message": "Invalid project ID specified: 1" } }
 

Retrieving a Milestone

Retrieves the details of an existing milestone. You need only supply the milestone ID that was returned when the milestone was created.

Arguments
id
integer required
The ID of the milestone to be retrieved.
Returns

Returns a milestone object if a valid ID was provided.

GET https://.bug.ly/v1/milestones/{MILESTONE_ID} curl https://.bug.ly/v1/milestones/1 \ -u {API_TOKEN}: { "id": 1, "object": "milestone", "name": "Beta 1", "description": "Feature-complete and probably very buggy", "project": { "name": "The Next Big Thing", "id": 1 }, "start_at": null, "end_at": null, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2012-01-10T10:28:04+01:00", "created_at": "2012-01-10T10:28:04+01:00" } { "error": { "code": "invalid_request_error", "message": "No such milestone: 1" } }
 

Updating a Milestone

Updates the specified milestone by setting the values of the parameters passed. Any parameters not provided will be left unchanged. For example, if you pass the name parameter, the name is changed but nothing else.

This request accepts the same arguments as the milestone creation call, with the caveat that you can only change the project_id if there are no issues associated with this milestone.

Arguments
name
string optional
The name for this milestone, may be visible in issue listings.
description
string optional
A description for the milestone, which will be visible on the milestone details page.
project_id
integer optional
The numerical ID of the project that this milestone belongs to. Note that you can only change this if no issues are associated with this milestone.
start_at
datetime optional
The start date for this milestone.
end_at
datetime optional
The end date for this milestone.
Returns

Returns the milestone object if the call succeeded. If an invalid project_id is specified, the call will return an error.

PUT https://.bug.ly/v1/milestones/{MILESTONE_ID} curl https://.bug.ly/v1/milestones/1 \ -X PUT \ -u {API_TOKEN}: \ -d "name=The new name" { "id": 1, "object": "milestone", "name": "The new name", "description": "Feature-complete and probably very buggy", "project": { "name": "The Next Big Thing", "id": 1 }, "start_at": null, "end_at": null, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2012-01-10T10:28:04+01:00", "created_at": "2012-01-10T10:28:04+01:00" } { "error": { "code": "invalid_request_error", "message": "No such milestone: 1" } }
 

Deleting a Milestone

Permanently deletes a milestone. It cannot be undone.

Arguments
id
integer required
The ID of the milestone to be deleted.
Returns

Returns an object with a deleted parameter on success. If the milestone id does not exist, an error is returned.

DELETE https://.bug.ly/v1/milestones/{MILESTONE_ID} curl https://.bug.ly/v1/milestones/1 \ -u {API_TOKEN}: \ -X DELETE { "deleted": true, "id": 1 } { "error": { "code": "invalid_request_error", "message": "No such milestone: 1" } }
 

List all Milestones

Returns a list of your milestones. The milestones are returned sorted by creation date, with the most recently created milestones appearing first.

Arguments
count
integer optional, default is 10
A limit on the number of milestones to be returned. Count can range between 1 and 100 milestones.
offset
integer optional, default is 0
An offset into your milestone array. The API will return the requested number of milestones starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count milestones, starting at index offset. Each entry in the array is a separate milestone object. If no more milestones are available, the resulting array will be empty. This request should never return an error.

GET https://.bug.ly/v1/milestones curl https://.bug.ly/v1/milestones \ -u {API_TOKEN}: { data: [ { "id": 1, "object": "milestone", "name": "Beta 1", "description": "Feature-complete and probably very buggy", "project": { "name": "The Next Big Thing", "id": 1 }, "start_at": null, "end_at": null, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2012-01-10T10:28:04+01:00", "created_at": "2012-01-10T10:28:04+01:00" }, {...}, {...} ] }
 

List Issues for a Milestone

Returns a list of issues for the given milestone. The issues are returned in sorted order, with the most recent issues appearing first.

Arguments
count
integer optional, default is 10
A limit on the number of issues to be returned. Count can range between 1 and 100 issues.
offset
integer optional, default is 0
An offset into your issues array. The API will return the requested number of issues starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count issues, starting at index offset. Each entry in the array is a separate issue object. If no more issues are available, the resulting array will be empty.

GET https://.bug.ly/v1/milestones/{MILESTONE_ID}/issues curl https://.bug.ly/v1/milestones/1/issues?count=3 \ -u {API_TOKEN}: { data: [ { "id": 1, "object": "issue", "title": "The signup form needs padding", "body": "We need to add some padding.", "resolved_by": null, "closed_by": null, "import_id": null, "import_msg": null, "imported_id": null, "imported_id2": null, "assigned_at": null, "created_by": { "id": "2f9efb6cad9baa3dfa4c904202wefde5", "full_name": "Don Johnson" }, "assigned_to": { "id": "69c28548da2c71d1a545941f13a2f94", "full_name": "Unassigned" }, "project": { "name": "The Next Big Thing", "id": 1 }, "milestone": { "name": "Release 2012-10", "id": 151 }, "status": { "name": "Open", "id": 200 }, "priority": { "name": "Important", "id": 800 }, "created_at": "2012-02-13T17:38:26+01:00", "updated_at": "2012-02-13T17:38:26+01:00" }, {...}, {...} ] }
 

Categories

Issues may be associated with a category. Categories are always tied to a project. The API allows you to create, delete, and update your categories. You can retrieve individual categories as well as a list of all categories.

It is currently not possible to specify or change the icon for a category throught the API.

 

Creating a New Category

Creates a new category object.

Arguments
name
string required
The name for this category, may be visible in issue listings.
project_id
integer required
The numerical ID of the project that this category belongs to.
description
string optional, default is null
A description for the category, which will be visible on the category details page.
Returns

Returns a category object if the call succeeded. If an invalid project ID is specified, the call will return an error.

POST https://.bug.ly/v1/categories curl https://.bug.ly/v1/categories \ -u {API_TOKEN}: \ -d "name=Invoicing" \ { "id": 1, "object": "category", "name": "Invoicing", "description": "", "project": { "name": "Inbox", "id": 1 }, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2011-04-17T08:59:06+02:00", "created_at": "2009-06-14T12:47:41+02:00" } { "error": { "code": "invalid_request_error", "message": "Invalid project ID specified: 1" } }
 

Retrieving a Category

Retrieves the details of an existing category. You need only supply the category ID that was returned when the category was created.

Arguments
id
integer required
The ID of the category to be retrieved.
Returns

Returns a category object if a valid ID was provided.

GET https://.bug.ly/v1/categories/{CATEGORY_ID} curl https://.bug.ly/v1/categories/1 \ -u {API_TOKEN}: { "id": 1, "object": "category", "name": "Invoicing", "description": "", "project": { "name": "Inbox", "id": 1 }, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2011-04-17T08:59:06+02:00", "created_at": "2009-06-14T12:47:41+02:00" } { "error": { "code": "invalid_request_error", "message": "No such category: 1" } }
 

Updating a Category

Updates the specified category by setting the values of the parameters passed. Any parameters not provided will be left unchanged. For example, if you pass the name parameter, the name is changed but nothing else.

This request accepts the same arguments as the category creation call.

Arguments
name
string optional
The name for this category, may be visible in issue listings.
description
string optional
A description for the category, which will be visible on the category details page.
project_id
integer optional
The numerical ID of the project that this category belongs to.
Returns

Returns the category object if the call succeeded. If an invalid project_id is specified, the call will return an error.

PUT https://.bug.ly/v1/categories/{CATEGORY_ID} curl https://.bug.ly/v1/categories/1 \ -X PUT \ -u {API_TOKEN}: \ -d "name=The new name" { "id": 1, "object": "category", "name": "The new name", "description": "", "project": { "name": "Inbox", "id": 1 }, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2011-04-17T08:59:06+02:00", "created_at": "2009-06-14T12:47:41+02:00" } { "error": { "code": "invalid_request_error", "message": "No such category: 1" } }
 

Deleting a Category

Permanently deletes a category. It cannot be undone.

Arguments
id
integer required
The ID of the category to be deleted.
Returns

Returns an object with a deleted parameter on success. If the category id does not exist, an error is returned.

DELETE https://.bug.ly/v1/categories/{CATEGORY_ID} curl https://.bug.ly/v1/categories/1 \ -u {API_TOKEN}: \ -X DELETE { "deleted": true, "id": 1 } { "error": { "code": "invalid_request_error", "message": "No such category: 1" } }
 

List all Categories

Returns a list of your categories. The categories are returned sorted by creation date, with the most recently created categories appearing first.

Arguments
count
integer optional, default is 10
A limit on the number of categories to be returned. Count can range between 1 and 100 categories.
offset
integer optional, default is 0
An offset into your category array. The API will return the requested number of categories starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count categories, starting at index offset. Each entry in the array is a separate category object. If no more categories are available, the resulting array will be empty. This request should never return an error.

GET https://.bug.ly/v1/categories curl https://.bug.ly/v1/categories \ -u {API_TOKEN}: { data: [ { "id": 1, "object": "category", "name": "Invoicing", "description": "", "project": { "name": "Inbox", "id": 1 }, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2011-04-17T08:59:06+02:00", "created_at": "2009-06-14T12:47:41+02:00" }, {...}, {...} ] }
 

List Issues for a Category

Returns a list of issues for the given category. The issues are returned in sorted order, with the most recent issues appearing first.

Arguments
count
integer optional, default is 10
A limit on the number of issues to be returned. Count can range between 1 and 100 issues.
offset
integer optional, default is 0
An offset into your issues array. The API will return the requested number of issues starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count issues, starting at index offset. Each entry in the array is a separate issue object. If no more issues are available, the resulting array will be empty.

GET https://.bug.ly/v1/categories/{CATEGORY_ID}/issues curl https://.bug.ly/v1/categories/1/issues?count=3 \ -u {API_TOKEN}: { data: [ { "id": 1, "object": "issue", "title": "The signup form needs padding", "body": "We need to add some padding.", "resolved_by": null, "closed_by": null, "import_id": null, "import_msg": null, "imported_id": null, "imported_id2": null, "assigned_at": null, "created_by": { "id": "2f9efb6cad9baa3dfa4c904202wefde5", "full_name": "Don Johnson" }, "assigned_to": { "id": "69c28548da2c71d1a545941f13a2f94", "full_name": "Unassigned" }, "project": { "name": "The Next Big Thing", "id": 1 }, "milestone": { "name": "Release 2012-10", "id": 151 }, "status": { "name": "Open", "id": 200 }, "priority": { "name": "Important", "id": 800 }, "created_at": "2012-02-13T17:38:26+01:00", "updated_at": "2012-02-13T17:38:26+01:00" }, {...}, {...} ] }
 

Users

Everybody that needs to access your Bugly account must have a user. A user can have access to several accounts.

Users created through the API are regular users, meaning that they typically represent a person and must have a username and password to be able to log in. This is in contrast to users who log in using Google, Facebook or another third-party authentication service.

Users can also be virtual, meaning that they typically represent a function or a group of people. These users cannot log in, and they are typically used as a placeholder until the proper regular user can be assigned for an issue. In such cases it is common to use a mailing list address as the email address for the user, so that the actual users which can solve an issue are alerted.

Individual users can decide (from their profile page) whether a given account’s administrators should be allowed to edit their user object. For users that do not allow themselves to be administered through your account, the only thing that can be edited is whether or not the user is enabled for your account.

The API allows you to create, delete, and update users. You can retrieve individual users as well as a list of all users.

 

Project Access Levels

Users can be given a different access to each project.

Summary of Access Levels
project_managerProject Manager, can manage milestones, categories etc.
issue_adminIssue Admin, can close or delete all issues
normal_userNormal User, can participate on issues according to normal rules
read_onlyRead-Only, only allowed to view issues
no_accessNo Access, cannot view anything
 

Creating a New User

Creates a new user object.

Arguments
full_name
string required
The full name for this user, may be visible in issue listings.
email
string required
A valid email address where this user can be reached.
username
string optional, but required for regular and admin users
A valid username which this user will use to log in.
password
string optional, but required for regular and admin users
A valid password which this user will use to log in.
enabled
boolean optional, default is true
Whether or not this user is enabled. Disabled users do not count towards the limit for your account.
url
string optional, default is null
A URL for this user. May be shown on the (public) profile page for the user.
timezone
string optional, default is UTC
A valid timezone string for this user, for example "Stockholm"
is_regular
boolean optional, default is true
A flag specifying whether or not this is a regular user, meaning that it typically represents a person, is not an admin, and that it can log in. Setting both this and is_virtual or is_admin to true at the same time will return an error.
is_admin
boolean optional, default is false
A flag specifying whether or not the user is an admin for your account. Setting this to true for a regular or virtual user will return an error.
is_virtual
boolean optional, default is false
A flag specifying whether or not this is a virtual user, meaning that it typically represents a function or group of people and that it cannot log in. Setting both this and is_regular or is_admin to true at the same time will return an error.
Returns

Returns a user object if the call succeeded. Will return an error if, for example, an invalid email address is specified, or certain arguments are combined in the wrong way (see above).

POST https://.bug.ly/v1/users curl https://.bug.ly/v1/users \ -u {API_TOKEN}: \ -d "name=Inbox" \ -d "description=The default user" { "id": "2f9efb234d9baa3df", "object": "user", "full_name": "Don Johnson", "email": "don_johnson@example.com", "url": "http://donjohnson.example.com/", "username": "donj", "timezone": "Stockholm", "enabled": true, "is_admin": true, "is_regular": false, "is_virtual": false, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2011-10-08T19:53:08+02:00", "created_at": "2009-06-02T19:39:59+02:00" } { "error": { "code": "invalid_request_error", "message": "Invalid email address format" } }
 

Retrieving a User

Retrieves the details of an existing user. You need only supply the user ID that was returned when the user was created.

Arguments
id
string required
The alphanumeric ID of the user to be retrieved.
Returns

Returns a user object if a valid ID was provided.

GET https://.bug.ly/v1/users/{USER_ID} curl https://.bug.ly/v1/users/2f9efb234d9baa3df \ -u {API_TOKEN}: { "id": "2f9efb234d9baa3df", "object": "user", "full_name": "Don Johnson", "email": "don_johnson@example.com", "url": "http://donjohnson.example.com/", "username": "donj", "timezone": "Stockholm", "enabled": true, "is_admin": true, "is_regular": false, "is_virtual": false, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2011-10-08T19:53:08+02:00", "created_at": "2009-06-02T19:39:59+02:00" } { "error": { "code": "invalid_request_error", "message": "No such user: 2f9efb234d9baa3df" } }
 

Updating a User

Updates the specified user by setting the values of the parameters passed. Any parameters not provided will be left unchanged. For example, if you pass the full_name parameter, the full name is changed but nothing else.

This request accepts mostly the same arguments as the user creation call. You cannot, however, set the is_virtual flag on a regular or admin user - that is, convert it to virtual. Note also that the user needs to allow administration by the admins for this account for anything other than enabled to be editable.

Arguments
full_name
string optional
The full name for this user, may be visible in issue listings.
email
string optional
A valid email address where this user can be reached.
username
string optional
A valid username which this user will use to log in.
password
string optional
A valid password which this user will use to log in.
enabled
boolean optional
Whether or not this user is enabled. Disabled users do not count towards the limit for your account.
url
string optional
A URL for this user. May be shown on the (public) profile page for the user.
timezone
string optional
A valid timezone string for this user, for example "Stockholm"
is_regular
boolean optional
A flag specifying whether or not this is a regular user, meaning that it typically represents a person, is not an admin, and that it can log in. Setting both this and is_admin to true at the same time will return an error.
is_admin
boolean optional
A flag specifying whether or not the user is an admin for your account. Setting both this and is_regular to true at the same time will return an error.
Returns

Returns the user object if the call succeeded. Will return an error if, for example, an invalid email address is specified, or certain arguments are combined in the wrong way (see above).

PUT https://.bug.ly/v1/users/{USER_ID} curl https://.bug.ly/v1/users/2f9efb234d9baa3df \ -X PUT \ -u {API_TOKEN}: \ -d "full_name=The new name" { "id": "2f9efb234d9baa3df", "object": "user", "full_name": "The new name", "email": "don_johnson@example.com", "url": "http://donjohnson.example.com/", "username": "donj", "timezone": "Stockholm", "enabled": true, "is_admin": true, "is_regular": false, "is_virtual": false, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2011-10-08T19:53:08+02:00", "created_at": "2009-06-02T19:39:59+02:00" } { "error": { "code": "invalid_request_error", "message": "No such user: 2f9efb234d9baa3df" } }
 

Deleting a User

Permanently deletes a user. It cannot be undone. Note that you cannot delete a user with open issues.

Arguments
id
integer required
The ID of the user to be deleted.
Returns

Returns an object with a deleted parameter on success. If the user id does not exist, an error is returned.

DELETE https://.bug.ly/v1/users/{USER_ID} curl https://.bug.ly/v1/users/2f9efb234d9baa3df \ -u {API_TOKEN}: \ -X DELETE { "deleted": true, "id": 1 } { "error": { "code": "invalid_request_error", "message": "No such user: 2f9efb234d9baa3df" } }
 

List all Users

Returns a list of your users. The users are returned sorted by creation date, with the most recently created users appearing first.

Arguments
count
integer optional, default is 10
A limit on the number of users to be returned. Count can range between 1 and 100.
offset
integer optional, default is 0
An offset into your user array. The API will return the requested number of users starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count users, starting at index offset. Each entry in the array is a separate user object. If no more users are available, the resulting array will be empty. This request should never return an error.

GET https://.bug.ly/v1/users curl https://.bug.ly/v1/users \ -u {API_TOKEN}: { data: [ { "id": "2f9efb234d9baa3df", "object": "user", "full_name": "Don Johnson", "email": "don_johnson@example.com", "url": "http://donjohnson.example.com/", "username": "donj", "timezone": "Stockholm", "enabled": true, "is_admin": true, "is_regular": false, "is_virtual": false, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2011-10-08T19:53:08+02:00", "created_at": "2009-06-02T19:39:59+02:00" }, {...}, {...} ] }
 

List Issues for a User

Returns a list of issues assigned to the given user. The issues are returned in sorted order, with the most recent issues appearing first.

Arguments
count
integer optional, default is 10
A limit on the number of issues to be returned. Count can range between 1 and 100.
offset
integer optional, default is 0
An offset into your issues array. The API will return the requested number of issues starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count issues, starting at index offset. Each entry in the array is a separate issue object. If no more issues are available, the resulting array will be empty.

GET https://.bug.ly/v1/users/{USER_ID}/issues curl https://.bug.ly/v1/users/69c28548da2c71d1a/issues?count=3 \ -u {API_TOKEN}: { data: [ { "id": 1, "object": "issue", "title": "The signup form needs padding", "body": "We need to add some padding.", "resolved_by": null, "closed_by": null, "import_id": null, "import_msg": null, "imported_id": null, "imported_id2": null, "assigned_at": null, "created_by": { "id": "2f9efb6cad9baa3dfa4c904202wefde5", "full_name": "Don Johnson" }, "assigned_to": { "id": "69c28548da2c71d1a545941f13a2f94", "full_name": "Unassigned" }, "project": { "name": "The Next Big Thing", "id": 1 }, "milestone": { "name": "Release 2012-10", "id": 151 }, "status": { "name": "Open", "id": 200 }, "priority": { "name": "Important", "id": 800 }, "created_at": "2012-02-13T17:38:26+01:00", "updated_at": "2012-02-13T17:38:26+01:00" }, {...}, {...} ] }
 

List Project Access Levels

Returns a list of Project Access Levels for the given user, for all projects.

Arguments

None.

Returns

A dictionary with a data property that contains an array of dictionaries, each containing the project_id and the project_name of the project, as well as an access_level property with the actual access for the project in question. This request should never return an error.

GET https://.bug.ly/v1/users/{USER_ID}/project_access curl https://.bug.ly/v1/users/69c28548da2c71d1a/project_access \ -u {API_TOKEN}: { "data": [ { "access_level": "read_only", "project_name": "Our New Product", "project_id": 2 }, { "access_level": "normal_user", "project_name": "Public Web Site", "project_id": 4 }, { "access_level": "project_manager", "project_name": "Support", "project_id": 17 } ] }
 

Update Project Access Level

Updates/sets the project access level for a given project.

Arguments
access_level
string required
The project access level label for the new access level, for example project_manager.
Returns

A dictionary containing the project_id and the project_name of the project, as well as an access_level property with the actual access for the project in question.

PUT https://.bug.ly/v1/users/{USER_ID}/project_access/{PROJECT_ID} curl https://.bug.ly/v1/users/69c28548da2c71d1a/project_access/2 \ -u {API_TOKEN}: \ -d access_level=project_manager \ -X PUT { "access_level": "project_manager", "project_name": "Our New Product", "project_id": 2 }
 

Labels

Issues are always associated with a label. Labels can be account-wide or tied to a project. The API allows you to create, delete, and update your labels. You can retrieve individual labels as well as a list of all labels.

 

Creating a New Label

Creates a new label object.

Arguments
name
string required
The name for this label, may be visible in issue listings.
project_id
integer required
The numerical ID of the project that this label belongs to.
color
string optional, default is "aaaaaa"
The background color for the label’s surrounding box, in hexadecimal format.
text_color
string optional, default is "ffffff"
The foreround (text) color for the label, in hexadecimal format.
Returns

Returns a label object if the call succeeded. If an invalid project ID is specified, the call will return an error.

POST https://.bug.ly/v1/labels curl https://.bug.ly/v1/labels \ -u {API_TOKEN}: \ -d "name=dogfood" { "id": 1, "object": "label", "name": "dogfood", "color": "d3e6b8", "text_color": "5e6652", "project": { "name": "Inbox", "id": 1 }, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2010-02-22T21:08:56+01:00", "created_at": "2010-02-22T21:08:56+01:00" } { "error": { "code": "invalid_request_error", "message": "Invalid project ID specified: 1" } }
 

Retrieving a Label

Retrieves the details of an existing label. You need only supply the label ID that was returned when the label was created.

Arguments
id
integer required
The ID of the label to be retrieved.
Returns

Returns a label object if a valid ID was provided.

GET https://.bug.ly/v1/labels/{LABEL_ID} curl https://.bug.ly/v1/labels/1 \ -u {API_TOKEN}: { "id": 1, "object": "label", "name": "dogfood", "color": "d3e6b8", "text_color": "5e6652", "project": { "name": "Inbox", "id": 1 }, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2010-02-22T21:08:56+01:00", "created_at": "2010-02-22T21:08:56+01:00" } { "error": { "code": "invalid_request_error", "message": "No such label: 1" } }
 

Updating a Label

Updates the specified label by setting the values of the parameters passed. Any parameters not provided will be left unchanged. For example, if you pass the name parameter, the name is changed but nothing else.

This request accepts the same arguments as the label creation call.

Arguments
name
string optional
The name for this label, may be visible in issue listings.
project_id
integer optional
The numerical ID of the project that this label belongs to.
color
string optional
The background color for the label’s surrounding box.
text_color
string optional
The foreround (text) color for the label.
Returns

Returns the label object if the call succeeded. If an invalid project ID is specified, the call will return an error.

PUT https://.bug.ly/v1/labels/{LABEL_ID} curl https://.bug.ly/v1/labels/1 \ -X PUT \ -u {API_TOKEN}: \ -d "name=The new name" { "id": 1, "object": "label", "name": "The new name", "color": "d3e6b8", "text_color": "5e6652", "project": { "name": "Inbox", "id": 1 }, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2010-02-22T21:08:56+01:00", "created_at": "2010-02-22T21:08:56+01:00" } { "error": { "code": "invalid_request_error", "message": "No such label: 1" } }
 

Deleting a Label

Permanently deletes a label. This cannot be undone.

Arguments
id
integer required
The ID of the label to be deleted.
Returns

Returns an object with a deleted parameter on success. If the label id does not exist, an error is returned.

DELETE https://.bug.ly/v1/labels/{LABEL_ID} curl https://.bug.ly/v1/labels/1 \ -u {API_TOKEN}: \ -X DELETE { "deleted": true, "id": 1 } { "error": { "code": "invalid_request_error", "message": "No such label: 1" } }
 

List all Labels

Returns a list of your labels. The labels are returned sorted by creation date, with the most recently created labels appearing first.

Arguments
count
integer optional, default is 10
A limit on the number of labels to be returned. Count can range between 1 and 100.
offset
integer optional, default is 0
An offset into your label array. The API will return the requested number of labels starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count labels, starting at index offset. Each entry in the array is a separate label object. If no more labels are available, the resulting array will be empty. This request should never return an error.

GET https://.bug.ly/v1/labels curl https://.bug.ly/v1/labels \ -u {API_TOKEN}: { data: [ { "id": 1, "object": "label", "name": "dogfood", "color": "d3e6b8", "text_color": "5e6652", "project": { "name": "Inbox", "id": 1 }, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2010-02-22T21:08:56+01:00", "created_at": "2010-02-22T21:08:56+01:00" }, {...}, {...} ] }
 

List Issues for a Label

Returns a list of issues for a given label. The issues are returned in sorted order, with the most recent issues appearing first.

Arguments
count
integer optional, default is 10
A limit on the number of issues to be returned. Count can range between 1 and 100.
offset
integer optional, default is 0
An offset into your issues array. The API will return the requested number of issues starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count issues, starting at index offset. Each entry in the array is a separate issue object. If no more issues are available, the resulting array will be empty.

GET https://.bug.ly/v1/labels/{LABEL_ID}/issues curl https://.bug.ly/v1/labels/1/issues?count=3 \ -u {API_TOKEN}: { data: [ { "id": 1, "object": "issue", "title": "The signup form needs padding", "body": "We need to add some padding.", "resolved_by": null, "closed_by": null, "import_id": null, "import_msg": null, "imported_id": null, "imported_id2": null, "assigned_at": null, "created_by": { "id": "2f9efb6cad9baa3dfa4c904202wefde5", "full_name": "Don Johnson" }, "assigned_to": { "id": "69c28548da2c71d1a545941f13a2f94", "full_name": "Unassigned" }, "project": { "name": "The Next Big Thing", "id": 1 }, "milestone": { "name": "Release 2012-10", "id": 151 }, "status": { "name": "Open", "id": 200 }, "priority": { "name": "Important", "id": 800 }, "created_at": "2012-02-13T17:38:26+01:00", "updated_at": "2012-02-13T17:38:26+01:00" }, {...}, {...} ] }
 

Statuses

Issues always have a status. The API allows you to create, delete, and update your statuses. You can retrieve individual statuses as well as a list of all statuses.

 

Creating a New Status

Creates a new status object.

Arguments
name
string required
The name for this status, may be visible in issue listings.
Returns

Returns a status object if the call succeeded.

POST https://.bug.ly/v1/statuses curl https://.bug.ly/v1/statuses \ -u {API_TOKEN}: \ -d "name=dogfood" \ { "id": 400, "name": "Closed", "created_at": "2009-06-02T19:25:23+02:00", "updated_at": "2009-06-02T19:25:23+02:00" } { "error": { "code": "invalid_request_error", "message": "Invalid project ID specified: 1" } }
 

Retrieving a Status

Retrieves the details of an existing status. You need only supply the status ID that was returned when the status was created.

Arguments
id
integer required
The ID of the status to be retrieved.
Returns

Returns a status object if a valid ID was provided.

GET https://.bug.ly/v1/statuses/{STATUS_ID} curl https://.bug.ly/v1/statuses/400 \ -u {API_TOKEN}: { "id": 400, "name": "Closed", "created_at": "2009-06-02T19:25:23+02:00", "updated_at": "2009-06-02T19:25:23+02:00" } { "error": { "code": "invalid_request_error", "message": "No such status: 400" } }
 

Updating a Status

Updates the specified status by setting the values of the parameters passed. Any parameters not provided will be left unchanged. For example, if you pass the name parameter, the name is changed but nothing else.

This request accepts the same arguments as the status creation call.

Arguments
name
string optional
The name for this status, may be visible in issue listings.
Returns

Returns the status object if the call succeeded.

PUT https://.bug.ly/v1/statuses/{STATUS_ID} curl https://.bug.ly/v1/statuses/400 \ -X PUT \ -u {API_TOKEN}: \ -d "name=The new name" { "id": 400, "name": "The new name", "created_at": "2009-06-02T19:25:23+02:00", "updated_at": "2009-06-02T19:25:23+02:00" } { "error": { "code": "invalid_request_error", "message": "No such status: 400" } }
 

Deleting a Status

Permanently deletes a status. This cannot be undone.

Arguments
id
integer required
The ID of the status to be deleted.
Returns

Returns an object with a deleted parameter on success. If the status id does not exist, an error is returned.

DELETE https://.bug.ly/v1/statuses/{STATUS_ID} curl https://.bug.ly/v1/statuses/400 \ -u {API_TOKEN}: \ -X DELETE { "deleted": true, "id": 1 } { "error": { "code": "invalid_request_error", "message": "No such status: 400" } }
 

List all Statuses

Returns a list of your statuses. The statuses are returned sorted by creation date, with the most recently created statuses appearing first.

Arguments
count
integer optional, default is 10
A limit on the number of statuses to be returned. Count can range between 1 and 100.
offset
integer optional, default is 0
An offset into your status array. The API will return the requested number of statuses starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count statuses, starting at index offset. Each entry in the array is a separate status object. If no more statuses are available, the resulting array will be empty. This request should never return an error.

GET https://.bug.ly/v1/statuses curl https://.bug.ly/v1/statuses \ -u {API_TOKEN}: { data: [ { "id": 400, "name": "Closed", "created_at": "2009-06-02T19:25:23+02:00", "updated_at": "2009-06-02T19:25:23+02:00" }, {...}, {...} ] }
 

List Issues for a Status

Returns a list of issues with a given status. The issues are returned in sorted order, with the most recent issues appearing first.

Arguments
count
integer optional, default is 10
A limit on the number of issues to be returned. Count can range between 1 and 100.
offset
integer optional, default is 0
An offset into your issues array. The API will return the requested number of issues starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count issues, starting at index offset. Each entry in the array is a separate issue object. If no more issues are available, the resulting array will be empty.

GET https://.bug.ly/v1/statuses/{STATUS_ID}/issues curl https://.bug.ly/v1/statuses/400/issues?count=3 \ -u {API_TOKEN}: { data: [ { "id": 1, "object": "issue", "title": "The signup form needs padding", "body": "We need to add some padding.", "resolved_by": null, "closed_by": null, "import_id": null, "import_msg": null, "imported_id": null, "imported_id2": null, "assigned_at": null, "created_by": { "id": "2f9efb6cad9baa3dfa4c904202wefde5", "full_name": "Don Johnson" }, "assigned_to": { "id": "69c28548da2c71d1a545941f13a2f94", "full_name": "Unassigned" }, "project": { "name": "The Next Big Thing", "id": 1 }, "milestone": { "name": "Release 2012-10", "id": 151 }, "status": { "name": "Open", "id": 200 }, "priority": { "name": "Important", "id": 800 }, "created_at": "2012-02-13T17:38:26+01:00", "updated_at": "2012-02-13T17:38:26+01:00" }, {...}, {...} ] }
 

Priorities

Issues always have a priority. The API allows you to retrieve individual priorities as well as a list of all priorities.

 

Retrieving a Priority

Retrieves the details of a priority. You need to supply the priority ID.

Arguments
id
integer required
The ID of the priority to be retrieved.
Returns

Returns a priority object if a valid ID was provided.

GET https://.bug.ly/v1/priorities/{PRIORITY_ID} curl https://.bug.ly/v1/priorities/200 \ -u {API_TOKEN}: { "id": 200, "name": "Critical", "created_at": "2009-06-02T19:25:23+02:00", "updated_at": "2009-06-02T19:25:23+02:00" } { "error": { "code": "invalid_request_error", "message": "No such priority: 200" } }
 

List all Priorities

Returns a list of all priorities. The labels are returned sorted by importance, with the most important first.

Arguments

None.

Returns

A dictionary with a data property that contains an array of all priorities. Each entry in the array is a separate priority object. This request should never return an error.

GET https://.bug.ly/v1/priorities curl https://.bug.ly/v1/priorities \ -u {API_TOKEN}: { data: [ { "id": 200, "name": "Critical", "created_at": "2009-06-02T19:25:23+02:00", "updated_at": "2009-06-02T19:25:23+02:00" }, {...}, {...} ] }
 

List Issues for a Priority

Returns a list of issues with a given priority. The issues are returned in sorted order, with the most recent issues appearing first.

Arguments
count
integer optional, default is 10
A limit on the number of issues to be returned. Count can range between 1 and 100.
offset
integer optional, default is 0
An offset into your issues array. The API will return the requested number of issues starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count issues, starting at index offset. Each entry in the array is a separate issue object. If no more issues are available, the resulting array will be empty.

GET https://.bug.ly/v1/priorities/{PRIORITY_ID}/issues curl https://.bug.ly/v1/priorities/200/issues?count=3 \ -u {API_TOKEN}: { data: [ { "id": 1, "object": "issue", "title": "The signup form needs padding", "body": "We need to add some padding.", "resolved_by": null, "closed_by": null, "import_id": null, "import_msg": null, "imported_id": null, "imported_id2": null, "assigned_at": null, "created_by": { "id": "2f9efb6cad9baa3dfa4c904202wefde5", "full_name": "Don Johnson" }, "assigned_to": { "id": "69c28548da2c71d1a545941f13a2f94", "full_name": "Unassigned" }, "project": { "name": "The Next Big Thing", "id": 1 }, "milestone": { "name": "Release 2012-10", "id": 151 }, "status": { "name": "Open", "id": 200 }, "priority": { "name": "Important", "id": 800 }, "created_at": "2012-02-13T17:38:26+01:00", "updated_at": "2012-02-13T17:38:26+01:00" }, {...}, {...} ] }
 

Pages

Pages can either represent internal Wiki pages or public Knowledge Base articles. The API allows you to create, delete, and update your pages. You can retrieve individual pages as well as a list of all pages.

 

Creating a New Page

Creates a new page object.

Arguments
title
string required
The name for this page.
body
string optional, default is null
The contents of the page, in MediaWiki format.
public
boolean optional, default is false
A flag which, if true, makes the page a Knowledge Base article, which will be visible to anyone on the Internet. If false, the page will become an internal Wiki page.
Returns

Returns a page object if the call succeeded.

POST https://.bug.ly/v1/pages curl https://.bug.ly/v1/pages \ -u {API_TOKEN}: \ -d "name=Wiki Intro" \ -d "body=Let’s write a ''Wiki Intro'' here." { "id": 3, "object": "page", "name": "Wiki_Intro", "title": "Wiki Intro", "body": "Let’s write a ''Wiki Intro'' here.", "public": false, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2011-08-09T21:49:06+02:00", "created_at": "2011-03-13T21:37:16+01:00" } { "error": { "code": "invalid_request_error", "message": "Title can’t be empty" } }
 

Retrieving a Page

Retrieves the details of an existing page. You need only supply the page ID that was returned when the page was created.

Arguments
id
integer required
The ID of the page to be retrieved.
Returns

Returns a page object if a valid ID was provided.

GET https://.bug.ly/v1/pages/{PAGE_ID} curl https://.bug.ly/v1/pages/1 \ -u {API_TOKEN}: { "id": 3, "object": "page", "name": "Wiki_Intro", "title": "Wiki Intro", "body": "Let’s write a ''Wiki Intro'' here.", "public": false, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2011-08-09T21:49:06+02:00", "created_at": "2011-03-13T21:37:16+01:00" } { "error": { "code": "invalid_request_error", "message": "No such page: 1" } }
 

Updating a Page

Updates the specified page by setting the values of the parameters passed. Any parameters not provided will be left unchanged. For example, if you pass the name parameter, the name is changed but nothing else.

This request accepts the same arguments as the page creation call.

Arguments
title
string required
The name for this page.
body
string optional
The contents of the page, in MediaWiki format.
public
boolean optional
A flag which, if true, makes the page a knowledge base article, which will be visible to anyone on the Internet.
Returns

Returns the page object if the call succeeded.

PUT https://.bug.ly/v1/pages/{PAGE_ID} curl https://.bug.ly/v1/pages/1 \ -X PUT \ -u {API_TOKEN}: \ -d "name=The new name" { "id": 3, "object": "page", "name": "The new name", "title": "Wiki Intro", "body": "Let’s write a ''Wiki Intro'' here.", "public": false, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2011-08-09T21:49:06+02:00", "created_at": "2011-03-13T21:37:16+01:00" } { "error": { "code": "invalid_request_error", "message": "No such page: 1" } }
 

Deleting a Page

Permanently deletes a page. It cannot be undone.

Arguments
id
integer required
The ID of the page to be deleted.
Returns

Returns an object with a deleted parameter on success. If the page id does not exist, an error is returned.

DELETE https://.bug.ly/v1/pages/{PAGE_ID} curl https://.bug.ly/v1/pages/1 \ -u {API_TOKEN}: \ -X DELETE { "deleted": true, "id": 1 } { "error": { "code": "invalid_request_error", "message": "No such page: 1" } }
 

List all Pages

Returns a list of your pages. The pages are returned sorted by creation date, with the most recently created pages appearing first.

Arguments
count
integer optional, default is 10
A limit on the number of pages to be returned. Count can range between 1 and 100.
offset
integer optional, default is 0
An offset into your page array. The API will return the requested number of pages starting at that offset.
Returns

A dictionary with a data property that contains an array of up to count pages, starting at index offset. Each entry in the array is a separate page object. If no more pages are available, the resulting array will be empty. This request should never return an error.

GET https://.bug.ly/v1/pages curl https://.bug.ly/v1/pages \ -u {API_TOKEN}: { data: [ { "id": 3, "object": "page", "name": "Wiki_Intro", "title": "Wiki Intro", "body": "Let’s write a ''Wiki Intro'' here.", "public": false, "import_id": null, "import_msg": null, "imported_id": null, "updated_at": "2011-08-09T21:49:06+02:00", "created_at": "2011-03-13T21:37:16+01:00" }, {...}, {...} ] }