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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '008defb6062958e4592b9e4a2a6ca8c8594af2c2751d593c8349e4e40d781c15'
4
- data.tar.gz: 69a52ad4465bb7de30725175172a7fee6003385fd952f1f791aedad6b0944350
3
+ metadata.gz: 0de7c6d92a7d28e2e96de5506e2ecb7e6edd60a087e949b955325628aa93358d
4
+ data.tar.gz: 61831b2e22916700edc08be34557d2b01f3fb0a23220436297236d8b413d5d72
5
5
  SHA512:
6
- metadata.gz: 88b38958f05730d46bd8dfeeda7ead7e7c1c6d86a7fb8628b9ec4f8790bc2638d2e88bcbb0dfb2acd1b393468625bb52838d6f69a90f81c01bdf6fce60d4269f
7
- data.tar.gz: 1e06a3d3c3b2c551078a66dd0743633cca7c45f49d5a5e6cadd886c6555854d36da2a8c6d67e40be94d530fd0932c4b923258b03793f50a52cf122b699a5ae4a
6
+ metadata.gz: 9465be48ec9a6bb9a0ec5d1278c8e16a5a296ad5bd802d2e3a839df2e2e3be5a1ecf9eb4dc0c841f3e78e8444b4dc81504e9efbad6cb58e6fecb423817e2db93
7
+ data.tar.gz: 2edd21ddbe339ef9f00147c6d398a1ba1013f8c7df9e78d6244a722fcd72c94d962495e1514231ff46421695aa5423ecb561d6478dcab4e936dab986499c7335
data/.rubocop.yml CHANGED
@@ -1,2 +1,4 @@
1
1
  inherit_from: .rubocop_todo.yml
2
2
 
3
+ Metrics/ClassLength:
4
+ Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,6 +1,13 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ ## 2.1.0 (28 July 2021)
5
+
6
+ ### Enhancements
7
+
8
+ * Add stability and release endpoints
9
+ | [#34](https://github.com/bugsnag/bugsnag-api-ruby/pull/34)
10
+
4
11
  ## 2.0.3 (11 May 2021)
5
12
 
6
13
  ### Fixes
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
@@ -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
@@ -1,5 +1,5 @@
1
1
  module Bugsnag
2
2
  module Api
3
- VERSION = "2.0.3"
3
+ VERSION = "2.1.0"
4
4
  end
5
5
  end
@@ -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
@@ -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
@@ -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.3
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-05-11 00:00:00.000000000 Z
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