bugsnag-api 1.0.3 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +14 -3
- data/CHANGELOG.md +32 -0
- data/CONTRIBUTING.md +40 -0
- data/README.md +126 -111
- data/bugsnag-api.gemspec +4 -3
- data/lib/bugsnag/api/client.rb +18 -9
- data/lib/bugsnag/api/client/collaborators.rb +87 -0
- data/lib/bugsnag/api/client/comments.rb +31 -40
- data/lib/bugsnag/api/client/currentuser.rb +33 -0
- data/lib/bugsnag/api/client/errors.rb +45 -51
- data/lib/bugsnag/api/client/eventfields.rb +50 -0
- data/lib/bugsnag/api/client/events.rb +38 -32
- data/lib/bugsnag/api/client/organizations.rb +46 -0
- data/lib/bugsnag/api/client/pivots.rb +43 -0
- data/lib/bugsnag/api/client/projects.rb +37 -63
- data/lib/bugsnag/api/client/trends.rb +38 -0
- data/lib/bugsnag/api/error.rb +4 -0
- data/lib/bugsnag/api/version.rb +1 -1
- data/spec/bugsnag/api/client/collaborators_spec.rb +101 -0
- data/spec/bugsnag/api/client/comments_spec.rb +42 -30
- data/spec/bugsnag/api/client/currentuser_spec.rb +57 -0
- data/spec/bugsnag/api/client/errors_spec.rb +44 -41
- data/spec/bugsnag/api/client/eventfields_spec.rb +56 -0
- data/spec/bugsnag/api/client/events_spec.rb +41 -29
- data/spec/bugsnag/api/client/organizations_spec.rb +53 -0
- data/spec/bugsnag/api/client/pivots_spec.rb +49 -0
- data/spec/bugsnag/api/client/projects_spec.rb +35 -59
- data/spec/bugsnag/api/client/trends_spec.rb +44 -0
- data/spec/bugsnag/api/client_spec.rb +8 -3
- data/spec/cassettes/Bugsnag_Api_Client/_get/handles_query_params.yml +45 -27
- data/spec/cassettes/Bugsnag_Api_Client/_last_response/caches_the_last_agent_response.yml +45 -27
- data/spec/cassettes/Bugsnag_Api_Client_Collaborators/_invitecollaborator/creates_and_returns_a_collaborator.yml +80 -0
- data/spec/cassettes/Bugsnag_Api_Client_Collaborators/_invitecollaborator/invites_multiple_collaborators.yml +80 -0
- data/spec/cassettes/Bugsnag_Api_Client_Collaborators/given_a_collaborator_exists/_collaborator/returns_a_collaborator.yml +157 -0
- data/spec/cassettes/Bugsnag_Api_Client_Collaborators/given_a_collaborator_exists/_collaborators/returns_a_list_of_all_organization_collaborators.yml +160 -0
- data/spec/cassettes/Bugsnag_Api_Client_Collaborators/given_a_collaborator_exists/_collaborators/returns_a_list_of_all_project_collaborators.yml +160 -0
- data/spec/cassettes/Bugsnag_Api_Client_Collaborators/given_a_collaborator_exists/_collaborators/throws_an_argument_error_if_neither_org_id_or_project_id_are_provided.yml +80 -0
- data/spec/cassettes/Bugsnag_Api_Client_Collaborators/given_a_collaborator_exists/_delete_collaborator/deletes_a_collaborator.yml +80 -0
- data/spec/cassettes/Bugsnag_Api_Client_Collaborators/given_a_collaborator_exists/_update_collaborator_permissions/updates_and_returns_the_collaborator.yml +157 -0
- data/spec/cassettes/Bugsnag_Api_Client_Collaborators/given_a_collaborator_exists/_view_collaborator_projects/returns_a_list_of_projects_belonging_to_the_collaborator.yml +159 -0
- data/spec/cassettes/Bugsnag_Api_Client_Comments/_create_comment/creates_a_comment_on_the_error.yml +82 -0
- data/spec/cassettes/Bugsnag_Api_Client_Comments/given_a_comment_has_been_created/_comment/retrieves_the_comment_specified.yml +159 -0
- data/spec/cassettes/Bugsnag_Api_Client_Comments/given_a_comment_has_been_created/_comments/retrieves_all_comments_on_an_error.yml +161 -0
- data/spec/cassettes/Bugsnag_Api_Client_Comments/given_a_comment_has_been_created/_delete_comment/deletes_the_comment_and_returns_true.yml +82 -0
- data/spec/cassettes/Bugsnag_Api_Client_Comments/given_a_comment_has_been_created/_update_comment/updates_the_message_on_a_comment.yml +159 -0
- data/spec/cassettes/Bugsnag_Api_Client_CurrentUser/_list_organizations/when_using_auth_token/returns_the_organization_the_auth_token_belongs_to.yml +81 -0
- data/spec/cassettes/Bugsnag_Api_Client_CurrentUser/_list_organizations/when_using_user_credentials/returns_users_organizations.yml +85 -0
- data/spec/cassettes/Bugsnag_Api_Client_CurrentUser/_list_projects/when_using_auth_token/lists_current_user_s_projects_in_the_organization.yml +82 -0
- data/spec/cassettes/Bugsnag_Api_Client_CurrentUser/_list_projects/when_using_user_credentials/lists_current_user_s_projects_in_the_organization.yml +86 -0
- data/spec/cassettes/Bugsnag_Api_Client_Errors/_error/returns_a_single_error.yml +82 -0
- data/spec/cassettes/Bugsnag_Api_Client_Errors/_errors/returns_errors_on_the_project.yml +84 -0
- data/spec/cassettes/Bugsnag_Api_Client_Errors/_update_errors/updates_and_returns_the_updated_errors.yml +80 -0
- data/spec/cassettes/Bugsnag_Api_Client_Events/_error_events/lists_all_error_events.yml +84 -0
- data/spec/cassettes/Bugsnag_Api_Client_Events/_event/returns_the_specified_event.yml +253 -0
- data/spec/cassettes/Bugsnag_Api_Client_Events/_events/returns_the_a_list_of_project_errors.yml +84 -0
- data/spec/cassettes/Bugsnag_Api_Client_Events/_latest_event/returns_the_last_event_on_an_error.yml +253 -0
- data/spec/cassettes/Bugsnag_Api_Client_Organizations/_create_organization/creates_a_new_organization.yml +84 -0
- data/spec/cassettes/Bugsnag_Api_Client_Organizations/with_organization/_delete_organization/deletes_the_organization.yml +159 -0
- data/spec/cassettes/Bugsnag_Api_Client_Organizations/with_organization/_organization/returns_the_requested_organization.yml +165 -0
- data/spec/cassettes/Bugsnag_Api_Client_Organizations/with_organization/_update_organization/updates_and_returns_the_organization.yml +165 -0
- data/spec/cassettes/Bugsnag_Api_Client_Projects/_create_project/creates_a_new_project.yml +80 -0
- data/spec/cassettes/Bugsnag_Api_Client_Projects/given_a_project/_delete_project/deletes_the_project.yml +151 -0
- data/spec/cassettes/Bugsnag_Api_Client_Projects/given_a_project/_project/returns_the_requested_project.yml +157 -0
- data/spec/cassettes/Bugsnag_Api_Client_Projects/given_a_project/_regenerate_api_key/removes_the_current_api_key_and_replaces_it_with_a_new_api_key.yml +157 -0
- data/spec/cassettes/Bugsnag_Api_Client_Projects/given_a_project/_update_project/updates_and_returns_the_project.yml +157 -0
- data/spec/cassettes/Bugsnag_Api_Client_Trends/_trends_buckets/returns_a_list_of_error_trends_in_bucket_form.yml +80 -0
- data/spec/cassettes/Bugsnag_Api_Client_Trends/_trends_buckets/returns_a_list_of_project_trends_in_bucket_form.yml +80 -0
- data/spec/cassettes/Bugsnag_Api_Client_Trends/_trends_resolution/returns_a_list_of_project_trends_in_resolution_form.yml +80 -0
- data/spec/cassettes/Bugsnag_Api_Client_Trends/_trends_resolution/returns_a_list_of_trends_in_resolution_form.yml +80 -0
- data/spec/spec_helper.rb +29 -27
- metadata +124 -83
- data/lib/bugsnag/api/client/accounts.rb +0 -44
- data/lib/bugsnag/api/client/users.rb +0 -99
- data/spec/bugsnag/api/client/accounts_spec.rb +0 -45
- data/spec/bugsnag/api/client/users_spec.rb +0 -105
- data/spec/cassettes/Bugsnag_Api_Client_Accounts/_account/returns_the_requested_account.yml +0 -49
- data/spec/cassettes/Bugsnag_Api_Client_Accounts/_account/when_using_account_credentials/returns_the_account.yml +0 -51
- data/spec/cassettes/Bugsnag_Api_Client_Accounts/_accounts/returns_all_accounts.yml +0 -49
- data/spec/cassettes/Bugsnag_Api_Client_Comments/_comments/returns_all_comments_on_an_error.yml +0 -107
- data/spec/cassettes/Bugsnag_Api_Client_Comments/_create_comment/created_a_comment.yml +0 -51
- data/spec/cassettes/Bugsnag_Api_Client_Comments/with_comment/_comment/returns_a_comment.yml +0 -97
- data/spec/cassettes/Bugsnag_Api_Client_Comments/with_comment/_delete_comment/deletes_an_existing_comment.yml +0 -92
- data/spec/cassettes/Bugsnag_Api_Client_Comments/with_comment/_update_comment/updates_an_existing_comment.yml +0 -97
- data/spec/cassettes/Bugsnag_Api_Client_Errors/_errors/returns_all_errors_on_an_project.yml +0 -48
- data/spec/cassettes/Bugsnag_Api_Client_Errors/with_error/_error/returns_an_error.yml +0 -48
- data/spec/cassettes/Bugsnag_Api_Client_Errors/with_error/_reopen_error/reopens_the_error.yml +0 -48
- data/spec/cassettes/Bugsnag_Api_Client_Errors/with_error/_resolve_error/resolves_the_error.yml +0 -48
- data/spec/cassettes/Bugsnag_Api_Client_Errors/with_error/_update_error/updates_the_error.yml +0 -48
- data/spec/cassettes/Bugsnag_Api_Client_Events/_error_events/returns_all_events_on_an_error.yml +0 -64
- data/spec/cassettes/Bugsnag_Api_Client_Events/_project_events/returns_all_events_on_a_project.yml +0 -64
- data/spec/cassettes/Bugsnag_Api_Client_Events/with_event/_event/returns_an_event.yml +0 -56
- data/spec/cassettes/Bugsnag_Api_Client_Projects/_account_projects/returns_all_projects_on_an_account.yml +0 -61
- data/spec/cassettes/Bugsnag_Api_Client_Projects/_account_projects/when_using_account_credentials/returns_all_projects.yml +0 -63
- data/spec/cassettes/Bugsnag_Api_Client_Projects/_create_project/creates_a_project_on_an_account.yml +0 -50
- data/spec/cassettes/Bugsnag_Api_Client_Projects/_user_projects/returns_all_projects_for_a_user.yml +0 -61
- data/spec/cassettes/Bugsnag_Api_Client_Projects/with_project/_delete_project/deletes_an_existing_project.yml +0 -91
- data/spec/cassettes/Bugsnag_Api_Client_Projects/with_project/_project/returns_a_project.yml +0 -95
- data/spec/cassettes/Bugsnag_Api_Client_Projects/with_project/_update_project/updates_an_existing_project.yml +0 -95
- data/spec/cassettes/Bugsnag_Api_Client_Users/_account_users/returns_all_users_on_an_account.yml +0 -49
- data/spec/cassettes/Bugsnag_Api_Client_Users/_account_users/when_using_account_credentials/returns_all_users.yml +0 -51
- data/spec/cassettes/Bugsnag_Api_Client_Users/_invite_user/invites_a_user_to_an_account.yml +0 -48
- data/spec/cassettes/Bugsnag_Api_Client_Users/_project_users/returns_all_users_for_a_project.yml +0 -49
- data/spec/cassettes/Bugsnag_Api_Client_Users/_user/returns_a_user.yml +0 -48
- data/spec/cassettes/Bugsnag_Api_Client_Users/_user/when_using_user_credentials/returns_the_authed_user.yml +0 -48
- data/spec/cassettes/Bugsnag_Api_Client_Users/with_user/_remove_user/removes_a_user_from_an_account.yml +0 -89
- data/spec/cassettes/Bugsnag_Api_Client_Users/with_user/_update_user_permissions/updates_a_users_permissions.yml +0 -93
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8fd0a95aa272468057d81984b0b20d40fccc01c
|
4
|
+
data.tar.gz: 6ecdee5fb39a7095d847dfb16f8a8485323a4c27
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5504fb4a05af47894bf86c740b81707ae8d445e5ed73255312de352b8f90ffef51ac8750102928c0053831ba331d87f2b87cc99fe47c6935012f9176136e795e
|
7
|
+
data.tar.gz: cde5fdecf9c29ac4dcc8defaa781d3d8c682a4fc1a57537a4b1044e48e3b89bda6f04cece86b753b27dd83a6bfd087b975c4537c3d7107b62d1ee0dd2c3d126a
|
data/.travis.yml
CHANGED
@@ -1,9 +1,20 @@
|
|
1
1
|
language: ruby
|
2
2
|
rvm:
|
3
|
+
- 2.4.1
|
4
|
+
- 2.2.2
|
3
5
|
- 2.1.0
|
4
6
|
- 2.0.0
|
5
7
|
- 1.9.3
|
6
|
-
- jruby-18mode
|
7
8
|
- jruby-19mode
|
8
|
-
|
9
|
-
|
9
|
+
|
10
|
+
before_install:
|
11
|
+
- gem install bundler -v 1.12
|
12
|
+
- gem update --system
|
13
|
+
- bundle --version
|
14
|
+
- gem --version
|
15
|
+
|
16
|
+
install:
|
17
|
+
- bundle _1.12.0_ install --with "$GEMSETS"
|
18
|
+
|
19
|
+
script:
|
20
|
+
- bundle _1.12.0_ exec rake
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,38 @@
|
|
1
1
|
Changelog
|
2
2
|
=========
|
3
3
|
|
4
|
+
## 2.0.0 (10 Oct 2017)
|
5
|
+
|
6
|
+
This release changes the gem to access v2 of the [Bugsnag data-access API](https://docs.bugsnag.com/api/data-access/), with full API documentation found [here](http://docs.bugsnagapiv2.apiary.io/).
|
7
|
+
|
8
|
+
### Enhancements
|
9
|
+
|
10
|
+
* Uses Bugsnag data-access API v2 endpoints with associated changes to endpoints and methods, namely:
|
11
|
+
- Removes:
|
12
|
+
* accounts
|
13
|
+
* users
|
14
|
+
- Adds:
|
15
|
+
* organizations
|
16
|
+
* collaborators
|
17
|
+
* event fields
|
18
|
+
* pivots
|
19
|
+
* trends
|
20
|
+
- Updates:
|
21
|
+
* comments
|
22
|
+
* errors
|
23
|
+
* events
|
24
|
+
* projects
|
25
|
+
|
26
|
+
| [#11](https://github.com/bugsnag/bugsnag-api-ruby/pull/11)
|
27
|
+
|
28
|
+
* Adds error response to hitting rate limit
|
29
|
+
| [#10](https://github.com/bugsnag/bugsnag-api-ruby/pull/10)
|
30
|
+
|
31
|
+
### Known Issues
|
32
|
+
|
33
|
+
* per_page option not respected in paginated API calls
|
34
|
+
* issues with event_fields not being created correctly
|
35
|
+
|
4
36
|
1.0.2
|
5
37
|
-----
|
6
38
|
- Fix load-order bug when requiring from certain environments
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
# How to contribute
|
2
|
+
|
3
|
+
1. [Fork](https://help.github.com/articles/fork-a-repo) the [library on GitHub](https://github.com/bugsnag/bugsnag-api-ruby)
|
4
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
5
|
+
3. Commit and push until you are happy with your contribution
|
6
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
7
|
+
5. Run the tests and make sure they all pass:
|
8
|
+
|
9
|
+
```
|
10
|
+
rake spec
|
11
|
+
```
|
12
|
+
|
13
|
+
6. Create a [Pull Request](https://help.github.com/articles/using-pull-requests)
|
14
|
+
|
15
|
+
Thank you!
|
16
|
+
|
17
|
+
## How to release
|
18
|
+
|
19
|
+
If you're a member of the core team, follow these instructions for releasing bugsnag-api-ruby.
|
20
|
+
|
21
|
+
### First time setup
|
22
|
+
|
23
|
+
* Create a Rubygems account
|
24
|
+
* Get a member of the platforms team to add you as contributor on bugsnag-ruby in Rubygems
|
25
|
+
|
26
|
+
### Every time
|
27
|
+
|
28
|
+
* Update `CHANGELOG.md`
|
29
|
+
* Update the version number in `bugsnag-api.gemspec`
|
30
|
+
* Update `README.md` if necessary with changes to the interface or configuration
|
31
|
+
* Commit/push your changes
|
32
|
+
* Release to rubygems
|
33
|
+
|
34
|
+
```
|
35
|
+
gem build bugsnag-api.gemspec
|
36
|
+
gem push bugsnag-api-[version].gem
|
37
|
+
```
|
38
|
+
* Create a new GitHub release, copying the changes from the change log
|
39
|
+
|
40
|
+
|
data/README.md
CHANGED
@@ -1,9 +1,12 @@
|
|
1
1
|
Bugsnag API Toolkit for Ruby
|
2
2
|
============================
|
3
|
+

|
4
|
+
|
5
|
+
The library allows for quick read/write access to the [Bugsnag Data Access API](https://docs.bugsnag.com/api/data-access/) from your Ruby applications. You can use this library to build your own applications which leverage data found in your Bugsnag dashboard.
|
3
6
|
|
4
|
-
|
7
|
+
Version 2.x (current) of this gem corresponds to v2 of the Data Access API, while [1.x](https://github.com/bugsnag/bugsnag-api-ruby/tree/v1.0.3) uses the (deprecated) v1 of the Data Access API.
|
5
8
|
|
6
|
-
If you are looking to automatically detect crashes in your Ruby apps, you should take a look at the [Bugsnag Ruby Detection Library](https://bugsnag.com/
|
9
|
+
If you are looking to automatically detect crashes in your Ruby apps, you should take a look at the [Bugsnag Ruby Detection Library](https://docs.bugsnag.com/platforms/ruby) instead.
|
7
10
|
|
8
11
|
This library borrows heavily from the code and philosophies of the fantastic [Octokit](https://github.com/octokit/octokit.rb) library. A big thanks to [@pengwynn](https://github.com/pengwynn) and the rest of the Octokit team!
|
9
12
|
|
@@ -19,12 +22,15 @@ This library borrows heavily from the code and philosophies of the fantastic [Oc
|
|
19
22
|
- [Pagination](#pagination)
|
20
23
|
- [Accessing HTTP responses](#accessing-http-responses)
|
21
24
|
- [API Methods](#api-methods)
|
22
|
-
- [
|
25
|
+
- [Organizations](#organizations)
|
26
|
+
- [Collaborators](#collaborators)
|
23
27
|
- [Comments](#comments)
|
24
28
|
- [Errors](#errors)
|
25
29
|
- [Events](#events)
|
30
|
+
- [Event Fields](#event-fields)
|
31
|
+
- [Pivots](#pivots)
|
26
32
|
- [Projects](#projects)
|
27
|
-
- [
|
33
|
+
- [Trends](#trends)
|
28
34
|
- [Advanced Configuration](#advanced-configuration)
|
29
35
|
|
30
36
|
|
@@ -51,6 +57,12 @@ $ gem install bugsnag-api
|
|
51
57
|
|
52
58
|
## Usage
|
53
59
|
|
60
|
+
### Require gem
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
require 'bugsnag/api'
|
64
|
+
```
|
65
|
+
|
54
66
|
### Making Requests
|
55
67
|
|
56
68
|
API methods are available as module methods or as client instance methods.
|
@@ -58,42 +70,44 @@ API methods are available as module methods or as client instance methods.
|
|
58
70
|
```ruby
|
59
71
|
# Provide authentication credentials
|
60
72
|
Bugsnag::Api.configure do |config|
|
61
|
-
config.auth_token = "your-
|
73
|
+
config.auth_token = "your-personal-auth-token"
|
62
74
|
end
|
63
75
|
|
64
|
-
#
|
65
|
-
|
76
|
+
# Access API methods
|
77
|
+
organizations = Bugsnag::Api.organizations
|
66
78
|
```
|
67
79
|
|
68
80
|
or...
|
69
81
|
|
70
82
|
```ruby
|
71
83
|
# Create an non-static API client
|
72
|
-
client = Bugsnag::Api::Client.new(auth_token: "your-
|
84
|
+
client = Bugsnag::Api::Client.new(auth_token: "your-personal-auth-token")
|
73
85
|
|
74
86
|
# Access API methods on the client
|
75
|
-
|
87
|
+
organizations = client.organizations
|
76
88
|
```
|
77
89
|
|
78
90
|
### Consuming Resources
|
79
91
|
|
80
|
-
Most methods return a `Resource`
|
92
|
+
Most methods return a [`Resource`](http://www.rubydoc.info/gems/sawyer/Sawyer/Resource)
|
93
|
+
object which provides dot notation and [] access for fields returned in the API
|
94
|
+
response.
|
81
95
|
|
82
96
|
```ruby
|
83
|
-
# Fetch
|
84
|
-
|
97
|
+
# Fetch an organization
|
98
|
+
org = Bugsnag::Api.organization("organization-id")
|
85
99
|
|
86
|
-
puts
|
100
|
+
puts org.name
|
87
101
|
# => "Acme Co"
|
88
102
|
|
89
|
-
puts
|
90
|
-
# => #<Set: {:id, :name, :
|
103
|
+
puts org.fields
|
104
|
+
# => #<Set: {:id, :name, :slug, :creator, :created_at, :updated_at, :auto_upgrade, :upgrade_url, :billing_emails}>
|
91
105
|
|
92
|
-
puts
|
106
|
+
puts org.id
|
93
107
|
# => "50baed0d9bf39c1431000003"
|
94
108
|
|
95
|
-
account.rels[:
|
96
|
-
# => "https://api.bugsnag.com/
|
109
|
+
account.rels[:upgrade].href
|
110
|
+
# => "https://api.bugsnag.com/organizations/50baed0d9bf39c1431000003/..."
|
97
111
|
```
|
98
112
|
|
99
113
|
### Accessing Related Resources
|
@@ -101,15 +115,15 @@ account.rels[:users].href
|
|
101
115
|
Resources returned by Bugsnag API methods contain not only data but hypermedia link relations:
|
102
116
|
|
103
117
|
```ruby
|
104
|
-
|
118
|
+
project = Bugsnag::Api.projects("organization-id")
|
105
119
|
|
106
120
|
# Get the users rel, returned from the API as users_url in the resource
|
107
|
-
|
108
|
-
# => "https://api.bugsnag.com/
|
121
|
+
project.rels[:errors].href
|
122
|
+
# => "https://api.bugsnag.com/projects/50baed0d9bf39c1431000003/errors"
|
109
123
|
|
110
|
-
|
111
|
-
|
112
|
-
# => "
|
124
|
+
errors = project.rels[:errors].get.data
|
125
|
+
errors.first.message
|
126
|
+
# => "Can't find method: getStrng()"
|
113
127
|
```
|
114
128
|
|
115
129
|
When processing API responses, all `*_url` attributes are culled in to the link relations collection. Any `url` attribute becomes `.rels[:self]`.
|
@@ -118,16 +132,17 @@ When processing API responses, all `*_url` attributes are culled in to the link
|
|
118
132
|
### Authentication
|
119
133
|
|
120
134
|
API usage requires authentication. You can authenticate using either your
|
121
|
-
Bugsnag account's [auth token](https://bugsnag.com/
|
122
|
-
or with your Bugsnag
|
135
|
+
Bugsnag account's [auth token](https://app.bugsnag.com/settings/my-account/)
|
136
|
+
or with your Bugsnag user credentials.
|
123
137
|
|
124
138
|
```ruby
|
125
139
|
# Authenticate with your Bugsnag account's auth token
|
126
140
|
Bugsnag::Api.configure do |config|
|
127
|
-
config.auth_token = "your-
|
141
|
+
config.auth_token = "your-personal-auth-token"
|
128
142
|
end
|
129
143
|
|
130
|
-
# Authenticate using your Bugsnag email address and password
|
144
|
+
# Authenticate using your Bugsnag email address and password. Unavailable when
|
145
|
+
# using multi-factor authentication.
|
131
146
|
Bugsnag::Api.configure do |config|
|
132
147
|
config.email = "example@example.com"
|
133
148
|
config.password = "password"
|
@@ -140,7 +155,11 @@ Many Bugsnag API resources are paginated. While you may be tempted to start addi
|
|
140
155
|
|
141
156
|
```ruby
|
142
157
|
errors = Bugsnag::Api.errors("project-id", per_page: 100)
|
143
|
-
|
158
|
+
last_response = Bugsnag::Api.last_response
|
159
|
+
until last_response.rels[:next].nil?
|
160
|
+
last_response = last_response.rels[:next].get
|
161
|
+
errors.concat last_response.data
|
162
|
+
end
|
144
163
|
```
|
145
164
|
|
146
165
|
|
@@ -149,37 +168,62 @@ errors.concat Bugsnag::Api.last_response.rels[:next].get.data
|
|
149
168
|
While most methods return a `Resource` object or a `Boolean`, sometimes you may need access to the raw HTTP response headers. You can access the last HTTP response with `Client#last_response`:
|
150
169
|
|
151
170
|
```ruby
|
152
|
-
|
153
|
-
response
|
154
|
-
status
|
171
|
+
organization = Bugsnag::Api.organizations.first
|
172
|
+
response = Bugsnag::Api.last_response
|
173
|
+
status = response.headers[:status]
|
155
174
|
```
|
156
175
|
|
157
176
|
## API Methods
|
158
177
|
|
159
|
-
|
178
|
+
The following methods are available via `Bugsnag::Api` and the Client interface.
|
179
|
+
For more information, consult the [API
|
180
|
+
documentation](http://www.rubydoc.info/gems/bugsnag-api/Bugsnag/Api/Client)
|
181
|
+
|
182
|
+
### Organizations
|
160
183
|
|
161
184
|
```ruby
|
162
|
-
# List your
|
163
|
-
|
185
|
+
# List your organizations
|
186
|
+
orgs = Bugsnag::Api.organizations
|
187
|
+
|
188
|
+
# Get a single organization
|
189
|
+
org = Bugsnag::Api.organizations("organization-id")
|
190
|
+
```
|
191
|
+
|
192
|
+
### Collaborators
|
193
|
+
|
194
|
+
```ruby
|
195
|
+
# List organization collaborators
|
196
|
+
users = Bugsnag::Api.collaborators("organization-id")
|
197
|
+
|
198
|
+
# List project collaborators
|
199
|
+
users = Bugsnag::Api.collaborators(nil, "project-id")
|
164
200
|
|
165
|
-
#
|
166
|
-
|
201
|
+
# Invite a user to an account
|
202
|
+
user = Bugsnag::Api.invite_collaborators("org-id", "example@example.com", {
|
203
|
+
admin: true
|
204
|
+
})
|
205
|
+
|
206
|
+
# Update a user's account permissions
|
207
|
+
user = Bugsnag::Api.update_collaborator_permissions("org-id", "user-id", {
|
208
|
+
admin: false
|
209
|
+
})
|
167
210
|
|
168
|
-
#
|
169
|
-
|
211
|
+
# Remove a user from an account
|
212
|
+
Bugsnag::Api.delete_collaborator("org-id", "user-id")
|
170
213
|
```
|
171
214
|
|
215
|
+
|
172
216
|
### Comments
|
173
217
|
|
174
218
|
```ruby
|
175
219
|
# List error comments
|
176
|
-
comments = Bugsnag::Api.comments("error-id")
|
220
|
+
comments = Bugsnag::Api.comments("project-id", "error-id")
|
177
221
|
|
178
222
|
# Get a single comment
|
179
|
-
comment = Bugsnag::Api.comment("comment-id")
|
223
|
+
comment = Bugsnag::Api.comment("project-id", "comment-id")
|
180
224
|
|
181
225
|
# Create a comment
|
182
|
-
comment = Bugsnag::Api.create_comment("error-id", "comment message")
|
226
|
+
comment = Bugsnag::Api.create_comment("project-id", "error-id", "comment message")
|
183
227
|
|
184
228
|
# Update a comment
|
185
229
|
comment = Bugsnag::Api.update_comment("comment-id", "new comment message")
|
@@ -192,24 +236,20 @@ Bugsnag::Api.delete_comment("comment-id")
|
|
192
236
|
|
193
237
|
```ruby
|
194
238
|
# List project errors
|
195
|
-
errors = Bugsnag::Api.errors("project-id")
|
239
|
+
errors = Bugsnag::Api.errors("project-id", "project-id")
|
196
240
|
|
197
241
|
# Get a single error
|
198
|
-
error = Bugsnag::Api.error("error-id")
|
242
|
+
error = Bugsnag::Api.error("project-id", "error-id")
|
199
243
|
|
200
|
-
#
|
201
|
-
error = Bugsnag::Api.
|
244
|
+
# Update a single error
|
245
|
+
error = Bugsnag::Api.update_errors("project-id", "error-id")
|
202
246
|
|
203
|
-
#
|
204
|
-
error = Bugsnag::Api.
|
205
|
-
|
206
|
-
# Update an error
|
207
|
-
error = Bugsnag::Api.update_error("error-id", {
|
208
|
-
resolved: true
|
209
|
-
})
|
247
|
+
# Update bulk errors
|
248
|
+
error = Bugsnag::Api.update_errors("project-id",
|
249
|
+
["error-id1", "error-id2"])
|
210
250
|
|
211
251
|
# Delete an error
|
212
|
-
error = Bugsnag::Api.delete_error("error-id")
|
252
|
+
error = Bugsnag::Api.delete_error("project-id", "error-id")
|
213
253
|
```
|
214
254
|
|
215
255
|
### Events
|
@@ -219,78 +259,68 @@ error = Bugsnag::Api.delete_error("error-id")
|
|
219
259
|
events = Bugsnag::Api.events("project-id")
|
220
260
|
|
221
261
|
# List error events
|
222
|
-
events = Bugsnag::Api.error_events("error-id")
|
262
|
+
events = Bugsnag::Api.error_events("project-id", "error-id")
|
263
|
+
|
264
|
+
# Get the latest event
|
265
|
+
event = Bugsnag::Api.latest_event("project-id", "error-id")
|
223
266
|
|
224
267
|
# Get a single event
|
225
|
-
event = Bugsnag::Api.event("event-id")
|
268
|
+
event = Bugsnag::Api.event("project-id", "event-id")
|
226
269
|
|
227
270
|
# Delete an event
|
228
|
-
Bugsnag::Api.delete_event("event-id")
|
271
|
+
Bugsnag::Api.delete_event("project-id", "event-id")
|
229
272
|
```
|
230
273
|
|
231
|
-
###
|
274
|
+
### Event Fields
|
232
275
|
|
233
276
|
```ruby
|
234
|
-
#
|
235
|
-
|
277
|
+
# list a project's event fields
|
278
|
+
Bugsnag::Api.event_fields("project-id")
|
279
|
+
|
280
|
+
# create an event field
|
281
|
+
Bugsnag::Api.create_event_field("project-id", "display id", "path.to.field", {})
|
236
282
|
|
237
|
-
#
|
238
|
-
|
283
|
+
# update an event field
|
284
|
+
Bugsnag::Api.update_event_field("project-id", "display id", "new.path.to.field")
|
239
285
|
|
240
|
-
#
|
241
|
-
|
286
|
+
# delete an event field
|
287
|
+
Bugsnag::Api.delete_event_field("project-id", "display id")
|
288
|
+
```
|
289
|
+
|
290
|
+
### Projects
|
291
|
+
|
292
|
+
```ruby
|
293
|
+
# List organization projects
|
294
|
+
projects = Bugsnag::Api.projects("organization-id")
|
242
295
|
|
243
296
|
# Get a single project
|
244
297
|
project = Bugsnag::Api.project("project-id")
|
245
298
|
|
246
299
|
# Create a project
|
247
|
-
project = Bugsnag::Api.create_project("
|
248
|
-
name: "Name",
|
249
|
-
type: "rails"
|
250
|
-
})
|
300
|
+
project = Bugsnag::Api.create_project("organization-id", "project name", "rails")
|
251
301
|
|
252
302
|
# Update a project
|
253
303
|
project = Bugsnag::Api.update_project("project-id", {
|
254
304
|
name: "New Name"
|
255
305
|
})
|
256
306
|
|
307
|
+
# Regenerate a project API key
|
308
|
+
Bugsnag::Api.regenerate_api_key("project-id")
|
309
|
+
|
257
310
|
# Delete a project
|
258
311
|
Bugsnag::Api.delete_project("project-id")
|
259
312
|
```
|
260
313
|
|
261
|
-
###
|
314
|
+
### Pivots
|
262
315
|
|
263
316
|
```ruby
|
264
|
-
#
|
265
|
-
|
266
|
-
|
267
|
-
# List authenticated account's users (requires account auth)
|
268
|
-
users = Bugsnag::Api.users
|
269
|
-
|
270
|
-
# List project users
|
271
|
-
users = Bugsnag::Api.project_users("project-id")
|
272
|
-
|
273
|
-
# Get a single user
|
274
|
-
user = Bugsnag::Api.user("user-id")
|
275
|
-
|
276
|
-
# Get authenticated user (requires user auth)
|
277
|
-
user = Bugsnag::Api.user
|
278
|
-
|
279
|
-
# Invite a user to an account
|
280
|
-
user = Bugsnag::Api.invite_user("account-id", "example@example.com", {
|
281
|
-
admin: true
|
282
|
-
})
|
317
|
+
# list a project's pivots
|
318
|
+
Bugsnag::Api.pivots("project-id")
|
283
319
|
|
284
|
-
#
|
285
|
-
|
286
|
-
admin: false
|
287
|
-
})
|
288
|
-
|
289
|
-
# Remove a user from an account
|
290
|
-
Bugsnag::Api.remove_user("account-id", "user-id")
|
320
|
+
# list pivot values
|
321
|
+
Bugsnag::Api.pivot_values("project-id", "display id")
|
291
322
|
```
|
292
323
|
|
293
|
-
|
294
324
|
## Advanced Configuration
|
295
325
|
|
296
326
|
### Endpoint
|
@@ -319,21 +349,6 @@ end
|
|
319
349
|
```
|
320
350
|
|
321
351
|
|
322
|
-
## Build Status
|
323
|
-
|
324
|
-

|
325
|
-
|
326
|
-
|
327
|
-
## Contributing
|
328
|
-
|
329
|
-
1. [Fork](https://help.github.com/articles/fork-a-repo) the [library on GitHub](https://github.com/bugsnag/bugsnag-api-ruby)
|
330
|
-
2. Create your feature branch (`git checkout -b my-new-feature`)
|
331
|
-
3. Commit and push until you are happy with your contribution
|
332
|
-
4. Push to the branch (`git push origin my-new-feature`)
|
333
|
-
5. Run the tests with rake spec and make sure they all pass
|
334
|
-
6. Create a [Pull Request](https://help.github.com/articles/using-pull-requests)
|
335
|
-
|
336
|
-
|
337
352
|
## License
|
338
353
|
|
339
354
|
The Bugsnag API Toolkit for Ruby is free software released under the MIT License. See [LICENSE.txt](LICENSE.txt) for details.
|