bugsnag-api 2.0.3 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -0
- data/CHANGELOG.md +7 -0
- data/README.md +22 -0
- data/lib/bugsnag/api/client.rb +4 -0
- data/lib/bugsnag/api/client/releases.rb +38 -0
- data/lib/bugsnag/api/client/stability.rb +16 -0
- data/lib/bugsnag/api/version.rb +1 -1
- data/spec/bugsnag/api/client/releases_spec.rb +184 -0
- data/spec/bugsnag/api/client/stability_spec.rb +32 -0
- data/spec/cassettes/Bugsnag_Api_Client_Releases/_release/gets_a_single_release.yml +87 -0
- data/spec/cassettes/Bugsnag_Api_Client_Releases/_release_groups/accepts_parameters.yml +90 -0
- data/spec/cassettes/Bugsnag_Api_Client_Releases/_release_groups/gets_releases_in_a_release_group.yml +87 -0
- data/spec/cassettes/Bugsnag_Api_Client_Releases/_releases/accepts_parameters.yml +92 -0
- data/spec/cassettes/Bugsnag_Api_Client_Releases/_releases/gets_as_list_of_releases.yml +91 -0
- data/spec/cassettes/Bugsnag_Api_Client_Stability/_stability_trend/gets_the_stability_trend.yml +87 -0
- data/spec/spec_helper.rb +11 -2
- metadata +20 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0de7c6d92a7d28e2e96de5506e2ecb7e6edd60a087e949b955325628aa93358d
|
4
|
+
data.tar.gz: 61831b2e22916700edc08be34557d2b01f3fb0a23220436297236d8b413d5d72
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9465be48ec9a6bb9a0ec5d1278c8e16a5a296ad5bd802d2e3a839df2e2e3be5a1ecf9eb4dc0c841f3e78e8444b4dc81504e9efbad6cb58e6fecb423817e2db93
|
7
|
+
data.tar.gz: 2edd21ddbe339ef9f00147c6d398a1ba1013f8c7df9e78d6244a722fcd72c94d962495e1514231ff46421695aa5423ecb561d6478dcab4e936dab986499c7335
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -32,6 +32,8 @@ This library borrows heavily from the code and philosophies of the fantastic [Oc
|
|
32
32
|
- [Pivots](#pivots)
|
33
33
|
- [Projects](#projects)
|
34
34
|
- [Trends](#trends)
|
35
|
+
- [Stability](#stability)
|
36
|
+
- [Releases](#releases)
|
35
37
|
- [Advanced Configuration](#advanced-configuration)
|
36
38
|
|
37
39
|
|
@@ -374,6 +376,26 @@ Bugsnag::Api.trends_buckets("project-id", 5, "error-id")
|
|
374
376
|
Bugsnag::Api.trends_resolution("project-id", "2h")
|
375
377
|
```
|
376
378
|
|
379
|
+
### Stability
|
380
|
+
|
381
|
+
```ruby
|
382
|
+
# view a project's stability trend
|
383
|
+
Bugsnag::Api.stability_trend("project-id")
|
384
|
+
```
|
385
|
+
|
386
|
+
### Releases
|
387
|
+
|
388
|
+
```ruby
|
389
|
+
# list the releases in a project
|
390
|
+
Bugsnag::Api.releases("project-id")
|
391
|
+
|
392
|
+
# view a single release
|
393
|
+
Bugsnag::Api.release("project-id", "release-id")
|
394
|
+
|
395
|
+
# list the releases in a release group
|
396
|
+
Bugsnag::Api.releases_in_group("release-group-id")
|
397
|
+
```
|
398
|
+
|
377
399
|
## Advanced Configuration
|
378
400
|
|
379
401
|
### Endpoint
|
data/lib/bugsnag/api/client.rb
CHANGED
@@ -10,6 +10,8 @@ require "bugsnag/api/client/events"
|
|
10
10
|
require "bugsnag/api/client/pivots"
|
11
11
|
require "bugsnag/api/client/trends"
|
12
12
|
require "bugsnag/api/client/comments"
|
13
|
+
require "bugsnag/api/client/stability"
|
14
|
+
require "bugsnag/api/client/releases"
|
13
15
|
|
14
16
|
module Bugsnag
|
15
17
|
module Api
|
@@ -28,6 +30,8 @@ module Bugsnag
|
|
28
30
|
include Bugsnag::Api::Client::Pivots
|
29
31
|
include Bugsnag::Api::Client::Trends
|
30
32
|
include Bugsnag::Api::Client::Comments
|
33
|
+
include Bugsnag::Api::Client::Stability
|
34
|
+
include Bugsnag::Api::Client::Releases
|
31
35
|
|
32
36
|
# Header keys that can be passed in options hash to {#get},{#head}
|
33
37
|
CONVENIENCE_HEADERS = Set.new([:accept, :content_type])
|
@@ -0,0 +1,38 @@
|
|
1
|
+
module Bugsnag
|
2
|
+
module Api
|
3
|
+
class Client
|
4
|
+
# Methods for the Releases API
|
5
|
+
module Releases
|
6
|
+
# List the Releases in a Project
|
7
|
+
#
|
8
|
+
# @option release_stage [String] Only Releases with this release stage will be returned
|
9
|
+
# @option base [String] Only Releases created before this time will be returned
|
10
|
+
# @option sort [String] How to sort the results, one of: timestamp, percent_of_sessions
|
11
|
+
# @option offset [Number] The pagination offset
|
12
|
+
# @option per_page [Number] The number of results to return per page
|
13
|
+
# @return [Array<Sawyer::Resource>] List of Events for the specified Error
|
14
|
+
# @see https://bugsnagapiv2.docs.apiary.io/#reference/projects/releases/list-releases-on-a-project
|
15
|
+
def releases(project_id, options = {})
|
16
|
+
get "projects/#{project_id}/releases", options
|
17
|
+
end
|
18
|
+
|
19
|
+
# View a single Release
|
20
|
+
#
|
21
|
+
# @see https://bugsnagapiv2.docs.apiary.io/#reference/projects/releases/view-a-release
|
22
|
+
def release(project_id, release_id, options = {})
|
23
|
+
get "projects/#{project_id}/releases/#{release_id}", options
|
24
|
+
end
|
25
|
+
|
26
|
+
# List the Releases in a Release Group
|
27
|
+
#
|
28
|
+
# @option per_page [Number] The number of results to return per page
|
29
|
+
# @option page_token [String] Value from the next relation in the Link response header to obtain the next page of results
|
30
|
+
# @return [Array<Sawyer::Resource>] List of Releases for the specified Release Group
|
31
|
+
# @see https://bugsnagapiv2.docs.apiary.io/#reference/projects/releases/list-releases-on-a-release-group
|
32
|
+
def releases_in_group(release_group_id, options = {})
|
33
|
+
get "release_groups/#{release_group_id}/releases", options
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Bugsnag
|
2
|
+
module Api
|
3
|
+
class Client
|
4
|
+
# Methods for the Stability API
|
5
|
+
module Stability
|
6
|
+
# View the stability trend for a project
|
7
|
+
#
|
8
|
+
# @return [Sawyer::Resource] Stability trend
|
9
|
+
# @see https://bugsnagapiv2.docs.apiary.io/#reference/projects/stability-trend/view-the-stability-trend-for-a-project
|
10
|
+
def stability_trend(id, options = {})
|
11
|
+
get "projects/#{id}/stability_trend", options
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
data/lib/bugsnag/api/version.rb
CHANGED
@@ -0,0 +1,184 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Bugsnag::Api::Client::Releases do
|
4
|
+
before do
|
5
|
+
@client = auth_token_client
|
6
|
+
@project_id = test_bugsnag_project_id
|
7
|
+
@release_id = test_bugsnag_release_id
|
8
|
+
@release_group_id = test_bugsnag_release_group_id
|
9
|
+
|
10
|
+
Bugsnag::Api.reset!
|
11
|
+
end
|
12
|
+
|
13
|
+
describe ".releases", :vcr do
|
14
|
+
it "gets as list of releases" do
|
15
|
+
releases = @client.releases(@project_id)
|
16
|
+
|
17
|
+
expect(releases).to be_an_instance_of(Array)
|
18
|
+
|
19
|
+
releases.map!(&:to_h)
|
20
|
+
|
21
|
+
expect(releases.first[:id]).to eq(@release_id)
|
22
|
+
expect(releases.first[:project_id]).to eq(@project_id)
|
23
|
+
expect(releases.first[:release_group_id]).to eq(@release_group_id)
|
24
|
+
|
25
|
+
expect(releases).to all have_key(:id)
|
26
|
+
expect(releases).to all have_key(:project_id)
|
27
|
+
expect(releases).to all have_key(:release_group_id)
|
28
|
+
expect(releases).to all have_key(:release_time)
|
29
|
+
expect(releases).to all have_key(:release_source)
|
30
|
+
expect(releases).to all have_key(:app_version)
|
31
|
+
expect(releases).to all have_key(:app_version_code)
|
32
|
+
expect(releases).to all have_key(:app_bundle_version)
|
33
|
+
expect(releases).to all have_key(:build_label)
|
34
|
+
expect(releases).to all have_key(:builder_name)
|
35
|
+
expect(releases).to all have_key(:build_tool)
|
36
|
+
expect(releases).to all have_key(:errors_introduced_count)
|
37
|
+
expect(releases).to all have_key(:errors_seen_count)
|
38
|
+
expect(releases).to all have_key(:sessions_count_in_last_24h)
|
39
|
+
expect(releases).to all have_key(:total_sessions_count)
|
40
|
+
expect(releases).to all have_key(:unhandled_sessions_count)
|
41
|
+
expect(releases).to all have_key(:accumulative_daily_users_seen)
|
42
|
+
expect(releases).to all have_key(:accumulative_daily_users_with_unhandled)
|
43
|
+
expect(releases).to all have_key(:metadata)
|
44
|
+
expect(releases).to all have_key(:release_stage)
|
45
|
+
end
|
46
|
+
|
47
|
+
it "accepts parameters" do
|
48
|
+
releases = @client.releases(
|
49
|
+
@project_id,
|
50
|
+
{
|
51
|
+
release_stage: 'development',
|
52
|
+
base: '2021-07-21T12:00:00Z',
|
53
|
+
sort: 'percent_of_sessions',
|
54
|
+
offset: 0,
|
55
|
+
per_page: 1
|
56
|
+
}
|
57
|
+
)
|
58
|
+
|
59
|
+
expect(releases).to be_an_instance_of(Array)
|
60
|
+
|
61
|
+
releases.map!(&:to_h)
|
62
|
+
|
63
|
+
expect(releases.first[:id]).to eq(@release_id)
|
64
|
+
expect(releases.first[:project_id]).to eq(@project_id)
|
65
|
+
expect(releases.first[:release_group_id]).to eq(@release_group_id)
|
66
|
+
|
67
|
+
expect(releases).to all have_key(:id)
|
68
|
+
expect(releases).to all have_key(:project_id)
|
69
|
+
expect(releases).to all have_key(:release_group_id)
|
70
|
+
expect(releases).to all have_key(:release_time)
|
71
|
+
expect(releases).to all have_key(:release_source)
|
72
|
+
expect(releases).to all have_key(:app_version)
|
73
|
+
expect(releases).to all have_key(:app_version_code)
|
74
|
+
expect(releases).to all have_key(:app_bundle_version)
|
75
|
+
expect(releases).to all have_key(:build_label)
|
76
|
+
expect(releases).to all have_key(:builder_name)
|
77
|
+
expect(releases).to all have_key(:build_tool)
|
78
|
+
expect(releases).to all have_key(:errors_introduced_count)
|
79
|
+
expect(releases).to all have_key(:errors_seen_count)
|
80
|
+
expect(releases).to all have_key(:sessions_count_in_last_24h)
|
81
|
+
expect(releases).to all have_key(:total_sessions_count)
|
82
|
+
expect(releases).to all have_key(:unhandled_sessions_count)
|
83
|
+
expect(releases).to all have_key(:accumulative_daily_users_seen)
|
84
|
+
expect(releases).to all have_key(:accumulative_daily_users_with_unhandled)
|
85
|
+
expect(releases).to all have_key(:metadata)
|
86
|
+
expect(releases).to all have_key(:release_stage)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
describe ".release", :vcr do
|
91
|
+
it "gets a single release" do
|
92
|
+
release = @client.release(@project_id, @release_id)
|
93
|
+
|
94
|
+
expect(release.id).to eq(@release_id)
|
95
|
+
expect(release.project_id).to eq(@project_id)
|
96
|
+
expect(release.release_group_id).to eq(@release_group_id)
|
97
|
+
expect(release.release_time).not_to be_nil
|
98
|
+
expect(release.release_source).not_to be_nil
|
99
|
+
expect(release.app_version).not_to be_nil
|
100
|
+
expect(release.app_version_code).not_to be_nil
|
101
|
+
expect(release.app_bundle_version).not_to be_nil
|
102
|
+
expect(release.build_label).not_to be_nil
|
103
|
+
expect(release.builder_name).not_to be_nil
|
104
|
+
expect(release.build_tool).not_to be_nil
|
105
|
+
expect(release.errors_introduced_count).not_to be_nil
|
106
|
+
expect(release.errors_seen_count).not_to be_nil
|
107
|
+
expect(release.sessions_count_in_last_24h).not_to be_nil
|
108
|
+
expect(release.total_sessions_count).not_to be_nil
|
109
|
+
expect(release.unhandled_sessions_count).not_to be_nil
|
110
|
+
expect(release.accumulative_daily_users_seen).not_to be_nil
|
111
|
+
expect(release.accumulative_daily_users_with_unhandled).not_to be_nil
|
112
|
+
expect(release.metadata).not_to be_nil
|
113
|
+
expect(release.release_stage).not_to be_nil
|
114
|
+
end
|
115
|
+
end
|
116
|
+
|
117
|
+
describe ".release_groups", :vcr do
|
118
|
+
it "gets releases in a release group" do
|
119
|
+
releases = @client.releases_in_group(@release_group_id)
|
120
|
+
|
121
|
+
expect(releases).to be_an_instance_of(Array)
|
122
|
+
|
123
|
+
releases.map!(&:to_h)
|
124
|
+
|
125
|
+
expect(releases.first[:id]).to eq(@release_id)
|
126
|
+
expect(releases.first[:project_id]).to eq(@project_id)
|
127
|
+
expect(releases.first[:release_group_id]).to eq(@release_group_id)
|
128
|
+
|
129
|
+
expect(releases).to all have_key(:id)
|
130
|
+
expect(releases).to all have_key(:project_id)
|
131
|
+
expect(releases).to all have_key(:release_group_id)
|
132
|
+
expect(releases).to all have_key(:release_time)
|
133
|
+
expect(releases).to all have_key(:release_source)
|
134
|
+
expect(releases).to all have_key(:app_version)
|
135
|
+
expect(releases).to all have_key(:app_version_code)
|
136
|
+
expect(releases).to all have_key(:app_bundle_version)
|
137
|
+
expect(releases).to all have_key(:build_label)
|
138
|
+
expect(releases).to all have_key(:builder_name)
|
139
|
+
expect(releases).to all have_key(:build_tool)
|
140
|
+
expect(releases).to all have_key(:errors_introduced_count)
|
141
|
+
expect(releases).to all have_key(:errors_seen_count)
|
142
|
+
expect(releases).to all have_key(:sessions_count_in_last_24h)
|
143
|
+
expect(releases).to all have_key(:total_sessions_count)
|
144
|
+
expect(releases).to all have_key(:unhandled_sessions_count)
|
145
|
+
expect(releases).to all have_key(:accumulative_daily_users_seen)
|
146
|
+
expect(releases).to all have_key(:accumulative_daily_users_with_unhandled)
|
147
|
+
expect(releases).to all have_key(:metadata)
|
148
|
+
expect(releases).to all have_key(:release_stage)
|
149
|
+
end
|
150
|
+
|
151
|
+
it "accepts parameters" do
|
152
|
+
releases = @client.releases_in_group(@release_group_id, { per_page: 1 })
|
153
|
+
|
154
|
+
expect(releases).to be_an_instance_of(Array)
|
155
|
+
|
156
|
+
releases.map!(&:to_h)
|
157
|
+
|
158
|
+
expect(releases.first[:id]).to eq(@release_id)
|
159
|
+
expect(releases.first[:project_id]).to eq(@project_id)
|
160
|
+
expect(releases.first[:release_group_id]).to eq(@release_group_id)
|
161
|
+
|
162
|
+
expect(releases).to all have_key(:id)
|
163
|
+
expect(releases).to all have_key(:project_id)
|
164
|
+
expect(releases).to all have_key(:release_group_id)
|
165
|
+
expect(releases).to all have_key(:release_time)
|
166
|
+
expect(releases).to all have_key(:release_source)
|
167
|
+
expect(releases).to all have_key(:app_version)
|
168
|
+
expect(releases).to all have_key(:app_version_code)
|
169
|
+
expect(releases).to all have_key(:app_bundle_version)
|
170
|
+
expect(releases).to all have_key(:build_label)
|
171
|
+
expect(releases).to all have_key(:builder_name)
|
172
|
+
expect(releases).to all have_key(:build_tool)
|
173
|
+
expect(releases).to all have_key(:errors_introduced_count)
|
174
|
+
expect(releases).to all have_key(:errors_seen_count)
|
175
|
+
expect(releases).to all have_key(:sessions_count_in_last_24h)
|
176
|
+
expect(releases).to all have_key(:total_sessions_count)
|
177
|
+
expect(releases).to all have_key(:unhandled_sessions_count)
|
178
|
+
expect(releases).to all have_key(:accumulative_daily_users_seen)
|
179
|
+
expect(releases).to all have_key(:accumulative_daily_users_with_unhandled)
|
180
|
+
expect(releases).to all have_key(:metadata)
|
181
|
+
expect(releases).to all have_key(:release_stage)
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Bugsnag::Api::Client::Stability do
|
4
|
+
before do
|
5
|
+
@client = auth_token_client
|
6
|
+
@project_id = test_bugsnag_project_id
|
7
|
+
|
8
|
+
Bugsnag::Api.reset!
|
9
|
+
end
|
10
|
+
|
11
|
+
describe ".stability_trend", :vcr do
|
12
|
+
it "gets the stability trend" do
|
13
|
+
stability_trend = @client.stability_trend(@project_id)
|
14
|
+
|
15
|
+
expect(stability_trend.project_id).to eq(@project_id)
|
16
|
+
expect(stability_trend.release_stage_name).not_to be_nil
|
17
|
+
expect(stability_trend.timeline_points).to be_an_instance_of(Array)
|
18
|
+
|
19
|
+
# convert each "Sawyer::Resource" to a hash so we can use the "have_key" matcher
|
20
|
+
timeline_points = stability_trend.timeline_points.map(&:to_h)
|
21
|
+
|
22
|
+
expect(timeline_points).to all have_key(:bucket_start)
|
23
|
+
expect(timeline_points).to all have_key(:bucket_end)
|
24
|
+
expect(timeline_points).to all have_key(:total_sessions_count)
|
25
|
+
expect(timeline_points).to all have_key(:unhandled_sessions_count)
|
26
|
+
expect(timeline_points).to all have_key(:users_seen)
|
27
|
+
expect(timeline_points).to all have_key(:users_with_unhandled)
|
28
|
+
|
29
|
+
assert_requested(:get, bugsnag_url("/projects/#{@project_id}/stability_trend"))
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,87 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://api.bugsnag.com/projects/BUGSNAG_PROJECT_ID/releases/BUGSNAG_RELEASE_ID
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Bugsnag API Ruby Gem 2.0.3
|
12
|
+
Content-Type:
|
13
|
+
- application/json
|
14
|
+
X-Version:
|
15
|
+
- '2'
|
16
|
+
X-Bugsnag-Api:
|
17
|
+
- 'true'
|
18
|
+
Authorization:
|
19
|
+
- token BUGSNAG_AUTH_TOKEN
|
20
|
+
Accept-Encoding:
|
21
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
22
|
+
Accept:
|
23
|
+
- "*/*"
|
24
|
+
response:
|
25
|
+
status:
|
26
|
+
code: 200
|
27
|
+
message: OK
|
28
|
+
headers:
|
29
|
+
Server:
|
30
|
+
- nginx
|
31
|
+
Date:
|
32
|
+
- Wed, 21 Jul 2021 11:03:45 GMT
|
33
|
+
Content-Type:
|
34
|
+
- application/json; charset=utf-8
|
35
|
+
X-Ratelimit-Limit:
|
36
|
+
- '30'
|
37
|
+
X-Ratelimit-Remaining:
|
38
|
+
- '29'
|
39
|
+
Etag:
|
40
|
+
- W/"9de5aed70023ff924dce3a5b17003ae5"
|
41
|
+
Cache-Control:
|
42
|
+
- max-age=0, private, must-revalidate
|
43
|
+
X-Request-Id:
|
44
|
+
- bbaad3d3-c3f4-4f9b-b8d5-9878502e2540
|
45
|
+
X-Runtime:
|
46
|
+
- '0.510790'
|
47
|
+
Vary:
|
48
|
+
- Origin
|
49
|
+
X-Frame-Options:
|
50
|
+
- DENY
|
51
|
+
X-Content-Type-Options:
|
52
|
+
- nosniff
|
53
|
+
X-Xss-Protection:
|
54
|
+
- 1; mode=block
|
55
|
+
X-Download-Options:
|
56
|
+
- noopen
|
57
|
+
X-Permitted-Cross-Domain-Policies:
|
58
|
+
- none
|
59
|
+
Content-Security-Policy:
|
60
|
+
- 'default-src ''self''; child-src https://*.stripe.com headway-widget.net https://*.youtube.com
|
61
|
+
https://www.google.com https://www.recaptcha.net; connect-src ''self'' https://api.bugsnag.com
|
62
|
+
https://notify.bugsnag.com https://sessions.bugsnag.com https://*.stripe.com
|
63
|
+
https://bugsnag.zendesk.com https://ekr.zdassets.com https://api.lever.co;
|
64
|
+
font-src ''self'' https://maxcdn.bootstrapcdn.com https://d2wy8f7a9ursnm.cloudfront.net;
|
65
|
+
img-src ''self'' data: https://notify.bugsnag.com https://*.stripe.com https://maxcdn.bootstrapcdn.com
|
66
|
+
https://d2wy8f7a9ursnm.cloudfront.net https://px.ads.linkedin.com; object-src
|
67
|
+
''self''; script-src ''self'' https://d2wy8f7a9ursnm.cloudfront.net https://*.stripe.com
|
68
|
+
https://maxcdn.bootstrapcdn.com https://code.jquery.com https://static.zdassets.com
|
69
|
+
https://ekr.zdassets.com https://cdn.headwayapp.co https://www.recaptcha.net
|
70
|
+
https://www.gstatic.com; style-src ''self'' ''unsafe-inline'' https://maxcdn.bootstrapcdn.com
|
71
|
+
https://d2wy8f7a9ursnm.cloudfront.net'
|
72
|
+
X-Robots-Tag:
|
73
|
+
- noindex, nofollow
|
74
|
+
Strict-Transport-Security:
|
75
|
+
- max-age=31536000
|
76
|
+
Via:
|
77
|
+
- 1.1 google
|
78
|
+
Alt-Svc:
|
79
|
+
- clear
|
80
|
+
Transfer-Encoding:
|
81
|
+
- chunked
|
82
|
+
body:
|
83
|
+
encoding: ASCII-8BIT
|
84
|
+
string: '{"id":"BUGSNAG_RELEASE_ID","project_id":"BUGSNAG_PROJECT_ID","release_group_id":"BUGSNAG_RELEASE_GROUP_ID","release_time":"2021-07-08T14:26:55+00:00","release_source":"event","app_version":"1.2.3","app_version_code":"","app_bundle_version":"","build_label":"1.2.3","builder_name":"","build_tool":"","errors_introduced_count":1,"errors_seen_count":1,"sessions_count_in_last_24h":0,"total_sessions_count":0,"unhandled_sessions_count":0,"accumulative_daily_users_seen":0,"accumulative_daily_users_with_unhandled":0,"metadata":{},"release_stage":{"name":"production"}}'
|
85
|
+
http_version:
|
86
|
+
recorded_at: Wed, 21 Jul 2021 11:03:45 GMT
|
87
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,90 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://api.bugsnag.com/release_groups/BUGSNAG_RELEASE_GROUP_ID/releases?per_page=1
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Bugsnag API Ruby Gem 2.0.3
|
12
|
+
Content-Type:
|
13
|
+
- application/json
|
14
|
+
X-Version:
|
15
|
+
- '2'
|
16
|
+
X-Bugsnag-Api:
|
17
|
+
- 'true'
|
18
|
+
Authorization:
|
19
|
+
- token BUGSNAG_AUTH_TOKEN
|
20
|
+
Accept-Encoding:
|
21
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
22
|
+
Accept:
|
23
|
+
- "*/*"
|
24
|
+
response:
|
25
|
+
status:
|
26
|
+
code: 200
|
27
|
+
message: OK
|
28
|
+
headers:
|
29
|
+
Server:
|
30
|
+
- nginx
|
31
|
+
Date:
|
32
|
+
- Wed, 21 Jul 2021 11:27:22 GMT
|
33
|
+
Content-Type:
|
34
|
+
- application/json; charset=utf-8
|
35
|
+
X-Ratelimit-Limit:
|
36
|
+
- '30'
|
37
|
+
X-Ratelimit-Remaining:
|
38
|
+
- '29'
|
39
|
+
Link:
|
40
|
+
- <https://api.bugsnag.com/release_groups/BUGSNAG_RELEASE_GROUP_ID/releases?page_token=BUGSNAG_RELEASE_ID%7C1625754415284%7C0&per_page=1>;
|
41
|
+
rel="next"
|
42
|
+
Etag:
|
43
|
+
- W/"5d40708836e0a05e40d26b81e9192067"
|
44
|
+
Cache-Control:
|
45
|
+
- max-age=0, private, must-revalidate
|
46
|
+
X-Request-Id:
|
47
|
+
- a3fc8c81-6f56-4039-a64b-37f50d827061
|
48
|
+
X-Runtime:
|
49
|
+
- '0.549084'
|
50
|
+
Vary:
|
51
|
+
- Origin
|
52
|
+
X-Frame-Options:
|
53
|
+
- DENY
|
54
|
+
X-Content-Type-Options:
|
55
|
+
- nosniff
|
56
|
+
X-Xss-Protection:
|
57
|
+
- 1; mode=block
|
58
|
+
X-Download-Options:
|
59
|
+
- noopen
|
60
|
+
X-Permitted-Cross-Domain-Policies:
|
61
|
+
- none
|
62
|
+
Content-Security-Policy:
|
63
|
+
- 'default-src ''self''; child-src https://*.stripe.com headway-widget.net https://*.youtube.com
|
64
|
+
https://www.google.com https://www.recaptcha.net; connect-src ''self'' https://api.bugsnag.com
|
65
|
+
https://notify.bugsnag.com https://sessions.bugsnag.com https://*.stripe.com
|
66
|
+
https://bugsnag.zendesk.com https://ekr.zdassets.com https://api.lever.co;
|
67
|
+
font-src ''self'' https://maxcdn.bootstrapcdn.com https://d2wy8f7a9ursnm.cloudfront.net;
|
68
|
+
img-src ''self'' data: https://notify.bugsnag.com https://*.stripe.com https://maxcdn.bootstrapcdn.com
|
69
|
+
https://d2wy8f7a9ursnm.cloudfront.net https://px.ads.linkedin.com; object-src
|
70
|
+
''self''; script-src ''self'' https://d2wy8f7a9ursnm.cloudfront.net https://*.stripe.com
|
71
|
+
https://maxcdn.bootstrapcdn.com https://code.jquery.com https://static.zdassets.com
|
72
|
+
https://ekr.zdassets.com https://cdn.headwayapp.co https://www.recaptcha.net
|
73
|
+
https://www.gstatic.com; style-src ''self'' ''unsafe-inline'' https://maxcdn.bootstrapcdn.com
|
74
|
+
https://d2wy8f7a9ursnm.cloudfront.net'
|
75
|
+
X-Robots-Tag:
|
76
|
+
- noindex, nofollow
|
77
|
+
Strict-Transport-Security:
|
78
|
+
- max-age=31536000
|
79
|
+
Via:
|
80
|
+
- 1.1 google
|
81
|
+
Alt-Svc:
|
82
|
+
- clear
|
83
|
+
Transfer-Encoding:
|
84
|
+
- chunked
|
85
|
+
body:
|
86
|
+
encoding: ASCII-8BIT
|
87
|
+
string: '[{"id":"BUGSNAG_RELEASE_ID","project_id":"BUGSNAG_PROJECT_ID","release_group_id":"BUGSNAG_RELEASE_GROUP_ID","release_time":"2021-07-08T14:26:55+00:00","release_source":"event","app_version":"1.2.3","app_version_code":"","app_bundle_version":"","build_label":"1.2.3","builder_name":"","build_tool":"","errors_introduced_count":1,"errors_seen_count":1,"sessions_count_in_last_24h":0,"total_sessions_count":0,"unhandled_sessions_count":0,"accumulative_daily_users_seen":0,"accumulative_daily_users_with_unhandled":0,"metadata":{},"release_stage":{"name":"production"}}]'
|
88
|
+
http_version:
|
89
|
+
recorded_at: Wed, 21 Jul 2021 11:27:22 GMT
|
90
|
+
recorded_with: VCR 2.9.3
|
data/spec/cassettes/Bugsnag_Api_Client_Releases/_release_groups/gets_releases_in_a_release_group.yml
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://api.bugsnag.com/release_groups/BUGSNAG_RELEASE_GROUP_ID/releases
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Bugsnag API Ruby Gem 2.0.3
|
12
|
+
Content-Type:
|
13
|
+
- application/json
|
14
|
+
X-Version:
|
15
|
+
- '2'
|
16
|
+
X-Bugsnag-Api:
|
17
|
+
- 'true'
|
18
|
+
Authorization:
|
19
|
+
- token BUGSNAG_AUTH_TOKEN
|
20
|
+
Accept-Encoding:
|
21
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
22
|
+
Accept:
|
23
|
+
- "*/*"
|
24
|
+
response:
|
25
|
+
status:
|
26
|
+
code: 200
|
27
|
+
message: OK
|
28
|
+
headers:
|
29
|
+
Server:
|
30
|
+
- nginx
|
31
|
+
Date:
|
32
|
+
- Wed, 21 Jul 2021 11:07:53 GMT
|
33
|
+
Content-Type:
|
34
|
+
- application/json; charset=utf-8
|
35
|
+
X-Ratelimit-Limit:
|
36
|
+
- '30'
|
37
|
+
X-Ratelimit-Remaining:
|
38
|
+
- '29'
|
39
|
+
Etag:
|
40
|
+
- W/"5d40708836e0a05e40d26b81e9192067"
|
41
|
+
Cache-Control:
|
42
|
+
- max-age=0, private, must-revalidate
|
43
|
+
X-Request-Id:
|
44
|
+
- c7048146-ff4b-42d3-b6ca-f115151d1f90
|
45
|
+
X-Runtime:
|
46
|
+
- '0.804233'
|
47
|
+
Vary:
|
48
|
+
- Origin
|
49
|
+
X-Frame-Options:
|
50
|
+
- DENY
|
51
|
+
X-Content-Type-Options:
|
52
|
+
- nosniff
|
53
|
+
X-Xss-Protection:
|
54
|
+
- 1; mode=block
|
55
|
+
X-Download-Options:
|
56
|
+
- noopen
|
57
|
+
X-Permitted-Cross-Domain-Policies:
|
58
|
+
- none
|
59
|
+
Content-Security-Policy:
|
60
|
+
- 'default-src ''self''; child-src https://*.stripe.com headway-widget.net https://*.youtube.com
|
61
|
+
https://www.google.com https://www.recaptcha.net; connect-src ''self'' https://api.bugsnag.com
|
62
|
+
https://notify.bugsnag.com https://sessions.bugsnag.com https://*.stripe.com
|
63
|
+
https://bugsnag.zendesk.com https://ekr.zdassets.com https://api.lever.co;
|
64
|
+
font-src ''self'' https://maxcdn.bootstrapcdn.com https://d2wy8f7a9ursnm.cloudfront.net;
|
65
|
+
img-src ''self'' data: https://notify.bugsnag.com https://*.stripe.com https://maxcdn.bootstrapcdn.com
|
66
|
+
https://d2wy8f7a9ursnm.cloudfront.net https://px.ads.linkedin.com; object-src
|
67
|
+
''self''; script-src ''self'' https://d2wy8f7a9ursnm.cloudfront.net https://*.stripe.com
|
68
|
+
https://maxcdn.bootstrapcdn.com https://code.jquery.com https://static.zdassets.com
|
69
|
+
https://ekr.zdassets.com https://cdn.headwayapp.co https://www.recaptcha.net
|
70
|
+
https://www.gstatic.com; style-src ''self'' ''unsafe-inline'' https://maxcdn.bootstrapcdn.com
|
71
|
+
https://d2wy8f7a9ursnm.cloudfront.net'
|
72
|
+
X-Robots-Tag:
|
73
|
+
- noindex, nofollow
|
74
|
+
Strict-Transport-Security:
|
75
|
+
- max-age=31536000
|
76
|
+
Via:
|
77
|
+
- 1.1 google
|
78
|
+
Alt-Svc:
|
79
|
+
- clear
|
80
|
+
Transfer-Encoding:
|
81
|
+
- chunked
|
82
|
+
body:
|
83
|
+
encoding: ASCII-8BIT
|
84
|
+
string: '[{"id":"BUGSNAG_RELEASE_ID","project_id":"BUGSNAG_PROJECT_ID","release_group_id":"BUGSNAG_RELEASE_GROUP_ID","release_time":"2021-07-08T14:26:55+00:00","release_source":"event","app_version":"1.2.3","app_version_code":"","app_bundle_version":"","build_label":"1.2.3","builder_name":"","build_tool":"","errors_introduced_count":1,"errors_seen_count":1,"sessions_count_in_last_24h":0,"total_sessions_count":0,"unhandled_sessions_count":0,"accumulative_daily_users_seen":0,"accumulative_daily_users_with_unhandled":0,"metadata":{},"release_stage":{"name":"production"}}]'
|
85
|
+
http_version:
|
86
|
+
recorded_at: Wed, 21 Jul 2021 11:07:53 GMT
|
87
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,92 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://api.bugsnag.com/projects/BUGSNAG_PROJECT_ID/releases?base=2021-07-21T12:00:00Z&offset=0&per_page=1&release_stage=development&sort=percent_of_sessions
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Bugsnag API Ruby Gem 2.0.3
|
12
|
+
Content-Type:
|
13
|
+
- application/json
|
14
|
+
X-Version:
|
15
|
+
- '2'
|
16
|
+
X-Bugsnag-Api:
|
17
|
+
- 'true'
|
18
|
+
Authorization:
|
19
|
+
- token BUGSNAG_AUTH_TOKEN
|
20
|
+
Accept-Encoding:
|
21
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
22
|
+
Accept:
|
23
|
+
- "*/*"
|
24
|
+
response:
|
25
|
+
status:
|
26
|
+
code: 200
|
27
|
+
message: OK
|
28
|
+
headers:
|
29
|
+
Server:
|
30
|
+
- nginx
|
31
|
+
Date:
|
32
|
+
- Wed, 21 Jul 2021 10:22:43 GMT
|
33
|
+
Content-Type:
|
34
|
+
- application/json; charset=utf-8
|
35
|
+
X-Ratelimit-Limit:
|
36
|
+
- '30'
|
37
|
+
X-Ratelimit-Remaining:
|
38
|
+
- '29'
|
39
|
+
X-Total-Count:
|
40
|
+
- '6'
|
41
|
+
Link:
|
42
|
+
- <https://api.bugsnag.com/projects/BUGSNAG_PROJECT_ID/releases?base=2021-07-21T12%3A00%3A00Z&offset=1&per_page=1&release_stage=development&sort=percent_of_sessions>;
|
43
|
+
rel="next"
|
44
|
+
Etag:
|
45
|
+
- W/"4219c5fa74334a52d3a02a1deafb2524"
|
46
|
+
Cache-Control:
|
47
|
+
- max-age=0, private, must-revalidate
|
48
|
+
X-Request-Id:
|
49
|
+
- 7c8cb266-3c07-4825-95c2-3b0a5cb1d432
|
50
|
+
X-Runtime:
|
51
|
+
- '0.682393'
|
52
|
+
Vary:
|
53
|
+
- Origin
|
54
|
+
X-Frame-Options:
|
55
|
+
- DENY
|
56
|
+
X-Content-Type-Options:
|
57
|
+
- nosniff
|
58
|
+
X-Xss-Protection:
|
59
|
+
- 1; mode=block
|
60
|
+
X-Download-Options:
|
61
|
+
- noopen
|
62
|
+
X-Permitted-Cross-Domain-Policies:
|
63
|
+
- none
|
64
|
+
Content-Security-Policy:
|
65
|
+
- 'default-src ''self''; child-src https://*.stripe.com headway-widget.net https://*.youtube.com
|
66
|
+
https://www.google.com https://www.recaptcha.net; connect-src ''self'' https://api.bugsnag.com
|
67
|
+
https://notify.bugsnag.com https://sessions.bugsnag.com https://*.stripe.com
|
68
|
+
https://bugsnag.zendesk.com https://ekr.zdassets.com https://api.lever.co;
|
69
|
+
font-src ''self'' https://maxcdn.bootstrapcdn.com https://d2wy8f7a9ursnm.cloudfront.net;
|
70
|
+
img-src ''self'' data: https://notify.bugsnag.com https://*.stripe.com https://maxcdn.bootstrapcdn.com
|
71
|
+
https://d2wy8f7a9ursnm.cloudfront.net https://px.ads.linkedin.com; object-src
|
72
|
+
''self''; script-src ''self'' https://d2wy8f7a9ursnm.cloudfront.net https://*.stripe.com
|
73
|
+
https://maxcdn.bootstrapcdn.com https://code.jquery.com https://static.zdassets.com
|
74
|
+
https://ekr.zdassets.com https://cdn.headwayapp.co https://www.recaptcha.net
|
75
|
+
https://www.gstatic.com; style-src ''self'' ''unsafe-inline'' https://maxcdn.bootstrapcdn.com
|
76
|
+
https://d2wy8f7a9ursnm.cloudfront.net'
|
77
|
+
X-Robots-Tag:
|
78
|
+
- noindex, nofollow
|
79
|
+
Strict-Transport-Security:
|
80
|
+
- max-age=31536000
|
81
|
+
Via:
|
82
|
+
- 1.1 google
|
83
|
+
Alt-Svc:
|
84
|
+
- clear
|
85
|
+
Transfer-Encoding:
|
86
|
+
- chunked
|
87
|
+
body:
|
88
|
+
encoding: ASCII-8BIT
|
89
|
+
string: '[{"id":"BUGSNAG_RELEASE_ID","project_id":"BUGSNAG_PROJECT_ID","release_group_id":"BUGSNAG_RELEASE_GROUP_ID","release_time":"2021-05-17T09:25:52+00:00","release_source":"session","app_version":"12.0.6","app_version_code":"","app_bundle_version":"","build_label":"12.0.6","builder_name":"","build_tool":"","errors_introduced_count":2,"errors_seen_count":2,"sessions_count_in_last_24h":0,"total_sessions_count":1,"unhandled_sessions_count":1,"accumulative_daily_users_seen":1,"accumulative_daily_users_with_unhandled":1,"metadata":{},"release_stage":{"name":"development"}}]'
|
90
|
+
http_version:
|
91
|
+
recorded_at: Wed, 21 Jul 2021 10:22:43 GMT
|
92
|
+
recorded_with: VCR 2.9.3
|
@@ -0,0 +1,91 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://api.bugsnag.com/projects/BUGSNAG_PROJECT_ID/releases
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Bugsnag API Ruby Gem 2.0.3
|
12
|
+
Content-Type:
|
13
|
+
- application/json
|
14
|
+
X-Version:
|
15
|
+
- '2'
|
16
|
+
X-Bugsnag-Api:
|
17
|
+
- 'true'
|
18
|
+
Authorization:
|
19
|
+
- token BUGSNAG_AUTH_TOKEN
|
20
|
+
Accept-Encoding:
|
21
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
22
|
+
Accept:
|
23
|
+
- "*/*"
|
24
|
+
response:
|
25
|
+
status:
|
26
|
+
code: 200
|
27
|
+
message: OK
|
28
|
+
headers:
|
29
|
+
Server:
|
30
|
+
- nginx
|
31
|
+
Date:
|
32
|
+
- Wed, 21 Jul 2021 10:16:11 GMT
|
33
|
+
Content-Type:
|
34
|
+
- application/json; charset=utf-8
|
35
|
+
X-Ratelimit-Limit:
|
36
|
+
- '30'
|
37
|
+
X-Ratelimit-Remaining:
|
38
|
+
- '29'
|
39
|
+
X-Total-Count:
|
40
|
+
- '18'
|
41
|
+
Link:
|
42
|
+
- <https://api.bugsnag.com/projects/BUGSNAG_PROJECT_ID/releases?offset=5>; rel="next"
|
43
|
+
Etag:
|
44
|
+
- W/"ed1f3093157525e1d0e3de94b66fb361"
|
45
|
+
Cache-Control:
|
46
|
+
- max-age=0, private, must-revalidate
|
47
|
+
X-Request-Id:
|
48
|
+
- 6106538c-08af-46f6-8750-22cb613f89c5
|
49
|
+
X-Runtime:
|
50
|
+
- '0.585272'
|
51
|
+
Vary:
|
52
|
+
- Origin
|
53
|
+
X-Frame-Options:
|
54
|
+
- DENY
|
55
|
+
X-Content-Type-Options:
|
56
|
+
- nosniff
|
57
|
+
X-Xss-Protection:
|
58
|
+
- 1; mode=block
|
59
|
+
X-Download-Options:
|
60
|
+
- noopen
|
61
|
+
X-Permitted-Cross-Domain-Policies:
|
62
|
+
- none
|
63
|
+
Content-Security-Policy:
|
64
|
+
- 'default-src ''self''; child-src https://*.stripe.com headway-widget.net https://*.youtube.com
|
65
|
+
https://www.google.com https://www.recaptcha.net; connect-src ''self'' https://api.bugsnag.com
|
66
|
+
https://notify.bugsnag.com https://sessions.bugsnag.com https://*.stripe.com
|
67
|
+
https://bugsnag.zendesk.com https://ekr.zdassets.com https://api.lever.co;
|
68
|
+
font-src ''self'' https://maxcdn.bootstrapcdn.com https://d2wy8f7a9ursnm.cloudfront.net;
|
69
|
+
img-src ''self'' data: https://notify.bugsnag.com https://*.stripe.com https://maxcdn.bootstrapcdn.com
|
70
|
+
https://d2wy8f7a9ursnm.cloudfront.net https://px.ads.linkedin.com; object-src
|
71
|
+
''self''; script-src ''self'' https://d2wy8f7a9ursnm.cloudfront.net https://*.stripe.com
|
72
|
+
https://maxcdn.bootstrapcdn.com https://code.jquery.com https://static.zdassets.com
|
73
|
+
https://ekr.zdassets.com https://cdn.headwayapp.co https://www.recaptcha.net
|
74
|
+
https://www.gstatic.com; style-src ''self'' ''unsafe-inline'' https://maxcdn.bootstrapcdn.com
|
75
|
+
https://d2wy8f7a9ursnm.cloudfront.net'
|
76
|
+
X-Robots-Tag:
|
77
|
+
- noindex, nofollow
|
78
|
+
Strict-Transport-Security:
|
79
|
+
- max-age=31536000
|
80
|
+
Via:
|
81
|
+
- 1.1 google
|
82
|
+
Alt-Svc:
|
83
|
+
- clear
|
84
|
+
Transfer-Encoding:
|
85
|
+
- chunked
|
86
|
+
body:
|
87
|
+
encoding: ASCII-8BIT
|
88
|
+
string: '[{"id":"BUGSNAG_RELEASE_ID","project_id":"BUGSNAG_PROJECT_ID","release_group_id":"BUGSNAG_RELEASE_GROUP_ID","release_time":"2021-07-08T14:26:55+00:00","release_source":"event","app_version":"1.2.3","app_version_code":"","app_bundle_version":"","build_label":"1.2.3","builder_name":"","build_tool":"","errors_introduced_count":1,"errors_seen_count":1,"sessions_count_in_last_24h":0,"total_sessions_count":0,"unhandled_sessions_count":0,"accumulative_daily_users_seen":0,"accumulative_daily_users_with_unhandled":0,"metadata":{},"release_stage":{"name":"production"}},{"id":"60a236a0c024ebcf749e8611","project_id":"BUGSNAG_PROJECT_ID","release_group_id":"60a236a0373c863538dc968a","release_time":"2021-05-17T09:25:52+00:00","release_source":"session","app_version":"12.0.6","app_version_code":"","app_bundle_version":"","build_label":"12.0.6","builder_name":"","build_tool":"","errors_introduced_count":2,"errors_seen_count":2,"sessions_count_in_last_24h":0,"total_sessions_count":1,"unhandled_sessions_count":1,"accumulative_daily_users_seen":1,"accumulative_daily_users_with_unhandled":1,"metadata":{},"release_stage":{"name":"development"}},{"id":"60a2356cc024ebcf7495230a","project_id":"BUGSNAG_PROJECT_ID","release_group_id":"6092ad2dc57ea33c2c797029","release_time":"2021-05-17T09:20:44+00:00","release_source":"session","app_version":"2.0.0","app_version_code":"","app_bundle_version":"","build_label":"2.0.0","builder_name":"","build_tool":"","errors_introduced_count":3,"errors_seen_count":8,"sessions_count_in_last_24h":0,"total_sessions_count":3,"unhandled_sessions_count":2,"accumulative_daily_users_seen":1,"accumulative_daily_users_with_unhandled":1,"metadata":{},"release_stage":{"name":"production"}},{"id":"60953ed4470751c2620dac65","project_id":"BUGSNAG_PROJECT_ID","release_group_id":"6092b4edc57ea33c2c79707d","release_time":"2021-05-07T13:21:24+00:00","release_source":"session","app_version":"1.0.0","app_version_code":"","app_bundle_version":"","build_label":"1.0.0","builder_name":"","build_tool":"","errors_introduced_count":8,"errors_seen_count":25,"sessions_count_in_last_24h":0,"total_sessions_count":29,"unhandled_sessions_count":11,"accumulative_daily_users_seen":4,"accumulative_daily_users_with_unhandled":4,"metadata":{},"release_stage":{"name":"production"}},{"id":"60953c5c470751c262f347f1","project_id":"BUGSNAG_PROJECT_ID","release_group_id":"60953c5cc57ea33c2c7980f7","release_time":"2021-05-07T13:10:52+00:00","release_source":"session","app_version":"1.0.0-bbbb","app_version_code":"","app_bundle_version":"","build_label":"1.0.0-bbbb","builder_name":"","build_tool":"","errors_introduced_count":7,"errors_seen_count":11,"sessions_count_in_last_24h":0,"total_sessions_count":17,"unhandled_sessions_count":7,"accumulative_daily_users_seen":3,"accumulative_daily_users_with_unhandled":3,"metadata":{},"release_stage":{"name":"production"}}]'
|
89
|
+
http_version:
|
90
|
+
recorded_at: Wed, 21 Jul 2021 10:16:11 GMT
|
91
|
+
recorded_with: VCR 2.9.3
|
data/spec/cassettes/Bugsnag_Api_Client_Stability/_stability_trend/gets_the_stability_trend.yml
ADDED
@@ -0,0 +1,87 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://api.bugsnag.com/projects/BUGSNAG_PROJECT_ID/stability_trend
|
6
|
+
body:
|
7
|
+
encoding: US-ASCII
|
8
|
+
string: ''
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- Bugsnag API Ruby Gem 2.0.3
|
12
|
+
Content-Type:
|
13
|
+
- application/json
|
14
|
+
X-Version:
|
15
|
+
- '2'
|
16
|
+
X-Bugsnag-Api:
|
17
|
+
- 'true'
|
18
|
+
Authorization:
|
19
|
+
- token BUGSNAG_AUTH_TOKEN
|
20
|
+
Accept-Encoding:
|
21
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
22
|
+
Accept:
|
23
|
+
- "*/*"
|
24
|
+
response:
|
25
|
+
status:
|
26
|
+
code: 200
|
27
|
+
message: OK
|
28
|
+
headers:
|
29
|
+
Server:
|
30
|
+
- nginx
|
31
|
+
Date:
|
32
|
+
- Tue, 20 Jul 2021 15:18:48 GMT
|
33
|
+
Content-Type:
|
34
|
+
- application/json; charset=utf-8
|
35
|
+
X-Ratelimit-Limit:
|
36
|
+
- '30'
|
37
|
+
X-Ratelimit-Remaining:
|
38
|
+
- '28'
|
39
|
+
Etag:
|
40
|
+
- W/"e187a5d89e7c6769b1733ac6f27b40c2"
|
41
|
+
Cache-Control:
|
42
|
+
- max-age=0, private, must-revalidate
|
43
|
+
X-Request-Id:
|
44
|
+
- 29002730-cc73-43bf-8e19-00d56b1fa14c
|
45
|
+
X-Runtime:
|
46
|
+
- '0.076007'
|
47
|
+
Vary:
|
48
|
+
- Origin
|
49
|
+
X-Frame-Options:
|
50
|
+
- DENY
|
51
|
+
X-Content-Type-Options:
|
52
|
+
- nosniff
|
53
|
+
X-Xss-Protection:
|
54
|
+
- 1; mode=block
|
55
|
+
X-Download-Options:
|
56
|
+
- noopen
|
57
|
+
X-Permitted-Cross-Domain-Policies:
|
58
|
+
- none
|
59
|
+
Content-Security-Policy:
|
60
|
+
- 'default-src ''self''; child-src https://*.stripe.com headway-widget.net https://*.youtube.com
|
61
|
+
https://www.google.com https://www.recaptcha.net; connect-src ''self'' https://api.bugsnag.com
|
62
|
+
https://notify.bugsnag.com https://sessions.bugsnag.com https://*.stripe.com
|
63
|
+
https://bugsnag.zendesk.com https://ekr.zdassets.com https://api.lever.co;
|
64
|
+
font-src ''self'' https://maxcdn.bootstrapcdn.com https://d2wy8f7a9ursnm.cloudfront.net;
|
65
|
+
img-src ''self'' data: https://notify.bugsnag.com https://*.stripe.com https://maxcdn.bootstrapcdn.com
|
66
|
+
https://d2wy8f7a9ursnm.cloudfront.net https://px.ads.linkedin.com; object-src
|
67
|
+
''self''; script-src ''self'' https://d2wy8f7a9ursnm.cloudfront.net https://*.stripe.com
|
68
|
+
https://maxcdn.bootstrapcdn.com https://code.jquery.com https://static.zdassets.com
|
69
|
+
https://ekr.zdassets.com https://cdn.headwayapp.co https://www.recaptcha.net
|
70
|
+
https://www.gstatic.com; style-src ''self'' ''unsafe-inline'' https://maxcdn.bootstrapcdn.com
|
71
|
+
https://d2wy8f7a9ursnm.cloudfront.net'
|
72
|
+
X-Robots-Tag:
|
73
|
+
- noindex, nofollow
|
74
|
+
Strict-Transport-Security:
|
75
|
+
- max-age=31536000
|
76
|
+
Via:
|
77
|
+
- 1.1 google
|
78
|
+
Alt-Svc:
|
79
|
+
- clear
|
80
|
+
Transfer-Encoding:
|
81
|
+
- chunked
|
82
|
+
body:
|
83
|
+
encoding: ASCII-8BIT
|
84
|
+
string: '{"project_id":"BUGSNAG_PROJECT_ID","release_stage_name":"development","timeline_points":[{"bucket_start":"2021-06-21T00:00:00.000Z","bucket_end":"2021-06-22T00:00:00.000Z","total_sessions_count":25,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-06-22T00:00:00.000Z","bucket_end":"2021-06-23T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-06-23T00:00:00.000Z","bucket_end":"2021-06-24T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-06-24T00:00:00.000Z","bucket_end":"2021-06-25T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-06-25T00:00:00.000Z","bucket_end":"2021-06-26T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-06-26T00:00:00.000Z","bucket_end":"2021-06-27T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-06-27T00:00:00.000Z","bucket_end":"2021-06-28T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-06-28T00:00:00.000Z","bucket_end":"2021-06-29T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-06-29T00:00:00.000Z","bucket_end":"2021-06-30T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-06-30T00:00:00.000Z","bucket_end":"2021-07-01T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-07-01T00:00:00.000Z","bucket_end":"2021-07-02T00:00:00.000Z","total_sessions_count":5,"unhandled_sessions_count":3,"unhandled_rate":0.6,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-07-02T00:00:00.000Z","bucket_end":"2021-07-03T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-07-03T00:00:00.000Z","bucket_end":"2021-07-04T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-07-04T00:00:00.000Z","bucket_end":"2021-07-05T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-07-05T00:00:00.000Z","bucket_end":"2021-07-06T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-07-06T00:00:00.000Z","bucket_end":"2021-07-07T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-07-07T00:00:00.000Z","bucket_end":"2021-07-08T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-07-08T00:00:00.000Z","bucket_end":"2021-07-09T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-07-09T00:00:00.000Z","bucket_end":"2021-07-10T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-07-10T00:00:00.000Z","bucket_end":"2021-07-11T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-07-11T00:00:00.000Z","bucket_end":"2021-07-12T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-07-12T00:00:00.000Z","bucket_end":"2021-07-13T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-07-13T00:00:00.000Z","bucket_end":"2021-07-14T00:00:00.000Z","total_sessions_count":4,"unhandled_sessions_count":2,"unhandled_rate":0.5,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-07-14T00:00:00.000Z","bucket_end":"2021-07-15T00:00:00.000Z","total_sessions_count":26,"unhandled_sessions_count":2,"unhandled_rate":0.07692307692307693,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-07-15T00:00:00.000Z","bucket_end":"2021-07-16T00:00:00.000Z","total_sessions_count":149,"unhandled_sessions_count":3,"unhandled_rate":0.020134228187919462,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-07-16T00:00:00.000Z","bucket_end":"2021-07-17T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-07-17T00:00:00.000Z","bucket_end":"2021-07-18T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-07-18T00:00:00.000Z","bucket_end":"2021-07-19T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-07-19T00:00:00.000Z","bucket_end":"2021-07-20T00:00:00.000Z","total_sessions_count":0,"unhandled_sessions_count":0,"unhandled_rate":0.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0},{"bucket_start":"2021-07-20T00:00:00.000Z","bucket_end":"2021-07-21T00:00:00.000Z","total_sessions_count":16,"unhandled_sessions_count":20,"unhandled_rate":1.0,"users_seen":0,"users_with_unhandled":0,"unhandled_user_rate":0.0}]}'
|
85
|
+
http_version:
|
86
|
+
recorded_at: Tue, 20 Jul 2021 15:18:48 GMT
|
87
|
+
recorded_with: VCR 2.9.3
|
data/spec/spec_helper.rb
CHANGED
@@ -39,7 +39,8 @@ VCR.configure do |c|
|
|
39
39
|
c.filter_sensitive_data("BUGSNAG_COLLABORATOR_EMAIL") { test_bugsnag_collaborator }
|
40
40
|
c.filter_sensitive_data("BUGSNAG_ERROR_ID") { test_bugsnag_error_id }
|
41
41
|
c.filter_sensitive_data("BUGSNAG_EVENT_ID") { test_bugsnag_event_id }
|
42
|
-
|
42
|
+
c.filter_sensitive_data("BUGSNAG_RELEASE_ID") { test_bugsnag_release_id }
|
43
|
+
c.filter_sensitive_data("BUGSNAG_RELEASE_GROUP_ID") { test_bugsnag_release_group_id }
|
43
44
|
end
|
44
45
|
|
45
46
|
def auth_token_client
|
@@ -121,4 +122,12 @@ end
|
|
121
122
|
|
122
123
|
def test_bugsnag_collaborator
|
123
124
|
ENV["BUGSNAG_TEST_COLLABORATOR_EMAIL"] || "BUGSNAG_COLLABORATOR_EMAIL"
|
124
|
-
end
|
125
|
+
end
|
126
|
+
|
127
|
+
def test_bugsnag_release_id
|
128
|
+
ENV["BUGSNAG_TEST_RELEASE_ID"] || "BUGSNAG_RELEASE_ID"
|
129
|
+
end
|
130
|
+
|
131
|
+
def test_bugsnag_release_group_id
|
132
|
+
ENV["BUGSNAG_TEST_RELEASE_GROUP_ID"] || "BUGSNAG_RELEASE_GROUP_ID"
|
133
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bugsnag-api
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
4
|
+
version: 2.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Smith
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-07-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sawyer
|
@@ -176,6 +176,8 @@ files:
|
|
176
176
|
- lib/bugsnag/api/client/organizations.rb
|
177
177
|
- lib/bugsnag/api/client/pivots.rb
|
178
178
|
- lib/bugsnag/api/client/projects.rb
|
179
|
+
- lib/bugsnag/api/client/releases.rb
|
180
|
+
- lib/bugsnag/api/client/stability.rb
|
179
181
|
- lib/bugsnag/api/client/trends.rb
|
180
182
|
- lib/bugsnag/api/configuration.rb
|
181
183
|
- lib/bugsnag/api/error.rb
|
@@ -191,6 +193,8 @@ files:
|
|
191
193
|
- spec/bugsnag/api/client/organizations_spec.rb
|
192
194
|
- spec/bugsnag/api/client/pivots_spec.rb
|
193
195
|
- spec/bugsnag/api/client/projects_spec.rb
|
196
|
+
- spec/bugsnag/api/client/releases_spec.rb
|
197
|
+
- spec/bugsnag/api/client/stability_spec.rb
|
194
198
|
- spec/bugsnag/api/client/trends_spec.rb
|
195
199
|
- spec/bugsnag/api/client_spec.rb
|
196
200
|
- spec/bugsnag/api_spec.rb
|
@@ -230,6 +234,12 @@ files:
|
|
230
234
|
- spec/cassettes/Bugsnag_Api_Client_Projects/given_a_project/_project/returns_the_requested_project.yml
|
231
235
|
- 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
|
232
236
|
- spec/cassettes/Bugsnag_Api_Client_Projects/given_a_project/_update_project/updates_and_returns_the_project.yml
|
237
|
+
- spec/cassettes/Bugsnag_Api_Client_Releases/_release/gets_a_single_release.yml
|
238
|
+
- spec/cassettes/Bugsnag_Api_Client_Releases/_release_groups/accepts_parameters.yml
|
239
|
+
- spec/cassettes/Bugsnag_Api_Client_Releases/_release_groups/gets_releases_in_a_release_group.yml
|
240
|
+
- spec/cassettes/Bugsnag_Api_Client_Releases/_releases/accepts_parameters.yml
|
241
|
+
- spec/cassettes/Bugsnag_Api_Client_Releases/_releases/gets_as_list_of_releases.yml
|
242
|
+
- spec/cassettes/Bugsnag_Api_Client_Stability/_stability_trend/gets_the_stability_trend.yml
|
233
243
|
- spec/cassettes/Bugsnag_Api_Client_Trends/_trends_buckets/returns_a_list_of_error_trends_in_bucket_form.yml
|
234
244
|
- spec/cassettes/Bugsnag_Api_Client_Trends/_trends_buckets/returns_a_list_of_project_trends_in_bucket_form.yml
|
235
245
|
- spec/cassettes/Bugsnag_Api_Client_Trends/_trends_resolution/returns_a_list_of_project_trends_in_resolution_form.yml
|
@@ -268,6 +278,8 @@ test_files:
|
|
268
278
|
- spec/bugsnag/api/client/organizations_spec.rb
|
269
279
|
- spec/bugsnag/api/client/pivots_spec.rb
|
270
280
|
- spec/bugsnag/api/client/projects_spec.rb
|
281
|
+
- spec/bugsnag/api/client/releases_spec.rb
|
282
|
+
- spec/bugsnag/api/client/stability_spec.rb
|
271
283
|
- spec/bugsnag/api/client/trends_spec.rb
|
272
284
|
- spec/bugsnag/api/client_spec.rb
|
273
285
|
- spec/bugsnag/api_spec.rb
|
@@ -307,6 +319,12 @@ test_files:
|
|
307
319
|
- spec/cassettes/Bugsnag_Api_Client_Projects/given_a_project/_project/returns_the_requested_project.yml
|
308
320
|
- 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
|
309
321
|
- spec/cassettes/Bugsnag_Api_Client_Projects/given_a_project/_update_project/updates_and_returns_the_project.yml
|
322
|
+
- spec/cassettes/Bugsnag_Api_Client_Releases/_release/gets_a_single_release.yml
|
323
|
+
- spec/cassettes/Bugsnag_Api_Client_Releases/_release_groups/accepts_parameters.yml
|
324
|
+
- spec/cassettes/Bugsnag_Api_Client_Releases/_release_groups/gets_releases_in_a_release_group.yml
|
325
|
+
- spec/cassettes/Bugsnag_Api_Client_Releases/_releases/accepts_parameters.yml
|
326
|
+
- spec/cassettes/Bugsnag_Api_Client_Releases/_releases/gets_as_list_of_releases.yml
|
327
|
+
- spec/cassettes/Bugsnag_Api_Client_Stability/_stability_trend/gets_the_stability_trend.yml
|
310
328
|
- spec/cassettes/Bugsnag_Api_Client_Trends/_trends_buckets/returns_a_list_of_error_trends_in_bucket_form.yml
|
311
329
|
- spec/cassettes/Bugsnag_Api_Client_Trends/_trends_buckets/returns_a_list_of_project_trends_in_bucket_form.yml
|
312
330
|
- spec/cassettes/Bugsnag_Api_Client_Trends/_trends_resolution/returns_a_list_of_project_trends_in_resolution_form.yml
|