bugsnag-api 2.0.3 → 2.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml 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