bugsnag-api 1.0.3 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
+
![Build status](https://travis-ci.org/bugsnag/bugsnag-api-ruby.svg?branch=master)
|
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
|
-
![Build status](https://travis-ci.org/bugsnag/bugsnag-api-ruby.svg?branch=master)
|
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.
|