braze_ruby 0.2.1 → 0.4.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.
Files changed (106) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +30 -0
  3. data/.gitignore +1 -0
  4. data/Gemfile +2 -0
  5. data/Gemfile.lock +39 -39
  6. data/README.md +48 -0
  7. data/Rakefile +2 -0
  8. data/braze_ruby.gemspec +7 -7
  9. data/lib/braze_ruby.rb +2 -0
  10. data/lib/braze_ruby/api.rb +12 -4
  11. data/lib/braze_ruby/deprecated.rb +2 -0
  12. data/lib/braze_ruby/endpoints.rb +3 -0
  13. data/lib/braze_ruby/endpoints/campaigns.rb +3 -1
  14. data/lib/braze_ruby/endpoints/canvas.rb +15 -0
  15. data/lib/braze_ruby/endpoints/delete_users.rb +4 -2
  16. data/lib/braze_ruby/endpoints/email_status.rb +3 -1
  17. data/lib/braze_ruby/endpoints/email_sync.rb +4 -2
  18. data/lib/braze_ruby/endpoints/identify_users.rb +19 -0
  19. data/lib/braze_ruby/endpoints/schedule_messages.rb +3 -1
  20. data/lib/braze_ruby/endpoints/send_messages.rb +3 -1
  21. data/lib/braze_ruby/endpoints/subscription.rb +20 -0
  22. data/lib/braze_ruby/endpoints/track_users.rb +7 -5
  23. data/lib/braze_ruby/http.rb +20 -5
  24. data/lib/braze_ruby/rest.rb +8 -0
  25. data/lib/braze_ruby/rest/base.rb +6 -2
  26. data/lib/braze_ruby/rest/canvas_details.rb +20 -0
  27. data/lib/braze_ruby/rest/delete_users.rb +3 -2
  28. data/lib/braze_ruby/rest/email_hard_bounces.rb +5 -5
  29. data/lib/braze_ruby/rest/email_status.rb +5 -5
  30. data/lib/braze_ruby/rest/email_unsubscribes.rb +5 -5
  31. data/lib/braze_ruby/rest/export_users.rb +7 -7
  32. data/lib/braze_ruby/rest/identify_users.rb +13 -0
  33. data/lib/braze_ruby/rest/list_segments.rb +4 -4
  34. data/lib/braze_ruby/rest/schedule_messages.rb +5 -5
  35. data/lib/braze_ruby/rest/send_messages.rb +5 -5
  36. data/lib/braze_ruby/rest/subscription_status_get.rb +20 -0
  37. data/lib/braze_ruby/rest/subscription_status_set.rb +20 -0
  38. data/lib/braze_ruby/rest/subscription_user_status.rb +20 -0
  39. data/lib/braze_ruby/rest/track_users.rb +3 -2
  40. data/lib/braze_ruby/rest/trigger_campaign_send.rb +6 -8
  41. data/lib/braze_ruby/rest/trigger_canvas_send.rb +20 -0
  42. data/lib/braze_ruby/version.rb +3 -1
  43. data/spec/braze_ruby/api_spec.rb +2 -0
  44. data/spec/braze_ruby/endpoints/delete_users_spec.rb +3 -1
  45. data/spec/braze_ruby/endpoints/track_users_spec.rb +10 -8
  46. data/spec/braze_ruby/http_spec.rb +48 -0
  47. data/spec/braze_ruby/rest/delete_users_spec.rb +5 -3
  48. data/spec/braze_ruby/rest/email_status_spec.rb +3 -2
  49. data/spec/braze_ruby/rest/export_users_spec.rb +5 -3
  50. data/spec/braze_ruby/rest/identify_users_spec.rb +23 -0
  51. data/spec/braze_ruby/rest/schedule_messages_spec.rb +3 -2
  52. data/spec/braze_ruby/rest/send_messages_spec.rb +10 -13
  53. data/spec/braze_ruby/rest/track_users_spec.rb +12 -9
  54. data/spec/factories.rb +2 -0
  55. data/spec/fixtures/responses/campaigns/trigger_send/sends_an_email.yml +17 -15
  56. data/spec/fixtures/responses/canvas/details/returns_error_when_no_canvas.yml +69 -0
  57. data/spec/fixtures/responses/canvas/trigger_send/sends_a_canvas.yml +71 -0
  58. data/spec/fixtures/responses/delete_users/unauthorized/responds_with_unauthorized.yml +20 -18
  59. data/spec/fixtures/responses/delete_users/with_success/responds_with_created.yml +25 -23
  60. data/spec/fixtures/responses/delete_users/with_success/responds_with_success_message.yml +25 -23
  61. data/spec/fixtures/responses/email_status/existing_email/responds_with_created.yml +22 -20
  62. data/spec/fixtures/responses/email_status/existing_email/responds_with_success_message.yml +22 -20
  63. data/spec/fixtures/responses/email_status/unknown_email/responds_with_bad_request.yml +22 -20
  64. data/spec/fixtures/responses/email_status/unknown_email/responds_with_success_message.yml +22 -20
  65. data/spec/fixtures/responses/email_sync/hard_bounces/responds_with_empty_array_when_no_hard_bounces.yml +18 -16
  66. data/spec/fixtures/responses/email_sync/unsubscribes/responds_with_empty_array_when_no_unsubscribes.yml +18 -16
  67. data/spec/fixtures/responses/email_sync/unsubscribes/responds_with_unsubscribed_emails.yml +21 -20
  68. data/spec/fixtures/responses/export_users/by_ids/with_success/responds_with_created.yml +25 -22
  69. data/spec/fixtures/responses/export_users/by_segment/with_success/responds_with_created.yml +24 -22
  70. data/spec/fixtures/responses/identify_users/unauthorized/responds_with_unauthorized.yml +68 -0
  71. data/spec/fixtures/responses/identify_users/with_success/responds_with_created.yml +71 -0
  72. data/spec/fixtures/responses/identify_users/with_success/responds_with_success_message.yml +71 -0
  73. data/spec/fixtures/responses/list_segments/with_success/responds_with_a_list_of_segments.yml +35 -35
  74. data/spec/fixtures/responses/list_segments/with_success/responds_with_success.yml +35 -35
  75. data/spec/fixtures/responses/schedule_messages/unauthorized/responds_with_unauthorize.yml +20 -19
  76. data/spec/fixtures/responses/schedule_messages/with_success/responds_with_created.yml +24 -23
  77. data/spec/fixtures/responses/schedule_messages/with_success/responds_with_success_message.yml +24 -23
  78. data/spec/fixtures/responses/send_messages/unauthorized/responds_with_unauthorized.yml +20 -18
  79. data/spec/fixtures/responses/send_messages/with_success/responds_with_created.yml +24 -22
  80. data/spec/fixtures/responses/send_messages/with_success/responds_with_success_message.yml +24 -22
  81. data/spec/fixtures/responses/subscription/subscription_status_set/when_subscribing/subscribes_the_user.yml +71 -0
  82. data/spec/fixtures/responses/subscription/subscription_status_set/when_subscription_group_does_not_exist/returns_an_error_status.yml +68 -0
  83. data/spec/fixtures/responses/subscription/subscription_status_set/when_unsubscribing/unsubscribes_the_user.yml +139 -0
  84. data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_status_get/when_checking_subscribed_and_unsubscribed_user_status/returns_only_users_that_were_once_subscribed.yml +211 -0
  85. data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_status_get/when_group_does_not_exist/returns_an_error.yml +199 -0
  86. data/spec/fixtures/responses/subscription/when_getting_subscription_group_statuses/subscription_user_status/returns_subscription_groups_and_status_for_every_group.yml +211 -0
  87. data/spec/fixtures/responses/track_users/unauthorized/responds_with_unauthorized.yml +23 -21
  88. data/spec/fixtures/responses/track_users/with_success/responds_with_created.yml +22 -20
  89. data/spec/fixtures/responses/track_users/with_success/responds_with_success_message.yml +22 -20
  90. data/spec/integrations/campaigns_spec.rb +6 -2
  91. data/spec/integrations/canvas_spec.rb +28 -0
  92. data/spec/integrations/delete_users_spec.rb +3 -0
  93. data/spec/integrations/email_status_spec.rb +2 -0
  94. data/spec/integrations/email_sync_spec.rb +4 -2
  95. data/spec/integrations/export_users_spec.rb +4 -2
  96. data/spec/integrations/identify_users_spec.rb +32 -0
  97. data/spec/integrations/list_segments_spec.rb +3 -1
  98. data/spec/integrations/schedule_messages_spec.rb +4 -1
  99. data/spec/integrations/send_messages_spec.rb +4 -1
  100. data/spec/integrations/subscription_spec.rb +149 -0
  101. data/spec/integrations/track_users_spec.rb +3 -0
  102. data/spec/spec_helper.rb +2 -8
  103. data/spec/support/factory_bot.rb +2 -0
  104. data/spec/support/integrations.rb +7 -1
  105. data/spec/support/vcr.rb +5 -1
  106. metadata +63 -21
@@ -1,9 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BrazeRuby
2
4
  module REST
3
5
  class TrackUsers < Base
4
- def perform(api_key, attributes: [], events: [], purchases: [])
6
+ def perform(attributes: [], events: [], purchases: [])
5
7
  http.post '/users/track', {
6
- 'api_key': api_key,
7
8
  'attributes': attributes,
8
9
  'events': events,
9
10
  'purchases': purchases
@@ -1,19 +1,17 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BrazeRuby
2
4
  module REST
3
5
  class TriggerCampaignSend < Base
4
- attr_reader :api_key, :params
6
+ attr_reader :params
5
7
 
6
- def initialize(api_key, braze_url, **params)
7
- @api_key = api_key
8
+ def initialize(api_key, braze_url, options, **params)
8
9
  @params = params
9
- super braze_url
10
+ super api_key, braze_url, options
10
11
  end
11
12
 
12
13
  def perform
13
- http.post('/campaigns/trigger/send', {
14
- 'api_key': api_key,
15
- **@params
16
- })
14
+ http.post('/campaigns/trigger/send', @params)
17
15
  end
18
16
  end
19
17
  end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module BrazeRuby
4
+ module REST
5
+ class TriggerCanvasSend < Base
6
+ attr_reader :params
7
+
8
+ def initialize(api_key, braze_url, options, **params)
9
+ @params = params
10
+ super api_key, braze_url, options
11
+ end
12
+
13
+ def perform
14
+ http.post('/canvas/trigger/send', {
15
+ **@params
16
+ })
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module BrazeRuby
2
- VERSION = '0.2.1'.freeze
4
+ VERSION = '0.4.0'.freeze
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe BrazeRuby::API do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  class API
@@ -21,7 +23,7 @@ describe BrazeRuby::Endpoints::DeleteUsers do
21
23
 
22
24
  it 'deletes users' do
23
25
  expect(delete_users_service).to receive(:perform)
24
- .with(:api_key, external_ids: payload)
26
+ .with(external_ids: payload)
25
27
 
26
28
  delete_users!
27
29
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  class API
@@ -21,11 +23,11 @@ describe BrazeRuby::Endpoints::TrackUsers do
21
23
  purchases: [build(:purchase)]
22
24
  }}
23
25
 
24
- subject(:track_users!) { api.track_users(payload) }
26
+ subject(:track_users!) { api.track_users(**payload) }
25
27
 
26
28
  it 'tracks attributes, events and purchases' do
27
29
  expect(track_users_service).to receive(:perform)
28
- .with(:api_key, payload)
30
+ .with(payload)
29
31
 
30
32
  track_users!
31
33
  end
@@ -34,11 +36,11 @@ describe BrazeRuby::Endpoints::TrackUsers do
34
36
  describe '#track_purchase' do
35
37
  let(:payload) { build(:purchase) }
36
38
 
37
- subject(:track_purchase!) { api.track_purchase(payload) }
39
+ subject(:track_purchase!) { api.track_purchase(**payload) }
38
40
 
39
41
  it 'tracks a single purchase' do
40
42
  expect(track_users_service).to receive(:perform)
41
- .with(:api_key, purchases: [payload])
43
+ .with(purchases: [payload])
42
44
 
43
45
  track_purchase!
44
46
  end
@@ -47,11 +49,11 @@ describe BrazeRuby::Endpoints::TrackUsers do
47
49
  describe '#track_event' do
48
50
  let(:payload) { build(:event) }
49
51
 
50
- subject(:track_event!) { api.track_event(payload) }
52
+ subject(:track_event!) { api.track_event(**payload) }
51
53
 
52
54
  it 'tracks a single purchase' do
53
55
  expect(track_users_service).to receive(:perform)
54
- .with(:api_key, events: [payload])
56
+ .with(events: [payload])
55
57
 
56
58
  track_event!
57
59
  end
@@ -60,11 +62,11 @@ describe BrazeRuby::Endpoints::TrackUsers do
60
62
  describe '#track_attribute' do
61
63
  let(:payload) { build(:attribute) }
62
64
 
63
- subject(:track_attribute!) { api.track_attribute(payload) }
65
+ subject(:track_attribute!) { api.track_attribute(**payload) }
64
66
 
65
67
  it 'tracks a single purchase' do
66
68
  expect(track_users_service).to receive(:perform)
67
- .with(:api_key, attributes: [payload])
69
+ .with(attributes: [payload])
68
70
 
69
71
  track_attribute!
70
72
  end
@@ -0,0 +1,48 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+ require 'braze_ruby/http'
5
+
6
+ describe BrazeRuby::HTTP do
7
+ describe "#connection" do
8
+ let(:options) { double("options", :"[]=" => nil) }
9
+ let(:headers) { double("headers", :"[]=" => nil) }
10
+ let(:conn) { double("conn", adapter: nil, options: options, headers: headers) }
11
+ let(:api_key) { "braze-api-key" }
12
+ let(:braze_url) { "http://example.com" }
13
+
14
+ before :each do
15
+ allow(Faraday).to receive(:new).and_yield(conn)
16
+ allow(Faraday).to receive(:default_adapter).and_return(:default_adapter)
17
+ end
18
+
19
+ it "it defaults to the timeout option" do
20
+ described_class.new(api_key, braze_url).connection
21
+
22
+ expect(options).to have_received(:"[]=").with(:timeout, described_class::DEFAULT_TIMEOUT)
23
+ end
24
+
25
+ it "it sets the default timeout option when given" do
26
+ timeout = 5
27
+ described_class.new(api_key, braze_url, {timeout: timeout}).connection
28
+
29
+ expect(options).to have_received(:"[]=").with(:timeout, timeout)
30
+ end
31
+
32
+ it "sets the headers" do
33
+ described_class.new(api_key, braze_url).connection
34
+
35
+
36
+ expect(headers).to have_received(:"[]=").with("Content-Type", "application/json")
37
+ expect(headers).to have_received(:"[]=").with("Accept", "application/json")
38
+ expect(headers).to have_received(:"[]=").with("User-Agent", "Braze Ruby gem v#{BrazeRuby::VERSION}")
39
+ expect(headers).to have_received(:"[]=").with("Authorization", "Bearer braze-api-key")
40
+ end
41
+
42
+ it "it sets the default adapter" do
43
+ described_class.new(api_key, braze_url).connection
44
+
45
+ expect(conn).to have_received(:adapter).with(:default_adapter)
46
+ end
47
+ end
48
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe BrazeRuby::REST::DeleteUsers do
@@ -7,14 +9,14 @@ describe BrazeRuby::REST::DeleteUsers do
7
9
 
8
10
  let(:api_key) { :api_key }
9
11
 
10
- subject { described_class.new :rest_url}
12
+ subject { described_class.new :api_key, :rest_url, {}}
11
13
 
12
14
  before { subject.http = http }
13
15
 
14
16
  it 'makes an http call to the delete user endpoint' do
15
17
  expect(http).to receive(:post).with '/users/delete',
16
- payload.merge({ api_key: :api_key })
18
+ payload
17
19
 
18
- subject.perform(api_key, payload)
20
+ subject.perform(**payload)
19
21
  end
20
22
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe BrazeRuby::REST::EmailStatus do
@@ -5,11 +7,10 @@ describe BrazeRuby::REST::EmailStatus do
5
7
 
6
8
  before { subject.http = http }
7
9
 
8
- subject { described_class.new(:api_key, :rest_url, email: :email, status: :status) }
10
+ subject { described_class.new(:api_key, :rest_url, {}, email: :email, status: :status) }
9
11
 
10
12
  it 'makes an http call to the email status endpoint' do
11
13
  expect(http).to receive(:post).with '/email/status', {
12
- api_key: :api_key,
13
14
  email: :email,
14
15
  subscription_state: :status
15
16
  }
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe BrazeRuby::REST::ExportUsers do
@@ -6,14 +8,14 @@ describe BrazeRuby::REST::ExportUsers do
6
8
  let(:payload) {{ external_ids: external_ids }}
7
9
  let(:external_ids) { [1] }
8
10
 
9
- subject { described_class.new :rest_url }
11
+ subject { described_class.new :api_key, :rest_url, {} }
10
12
 
11
13
  before { subject.http = http }
12
14
 
13
15
  it 'makes an http call to the track user endpoint' do
14
16
  expect(http).to receive(:post).with '/users/export/ids',
15
- payload.merge({ api_key: :api_key })
17
+ payload
16
18
 
17
- subject.perform(:api_key, payload)
19
+ subject.perform(**payload)
18
20
  end
19
21
  end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'spec_helper'
4
+
5
+ describe BrazeRuby::REST::IdentifyUsers do
6
+ let(:http) { double(:http) }
7
+
8
+ let(:payload) { {aliases_to_identify: [user]} }
9
+ let(:user) { { external_id: 123, user_alias: { alias_name: 'abc', alias_label: 'foo' } } }
10
+
11
+ let(:api_key) { :api_key }
12
+
13
+ subject { described_class.new :api_key, :rest_url, {}}
14
+
15
+ before { subject.http = http }
16
+
17
+ it 'makes an http call to the identify users endpoint' do
18
+ expect(http).to receive(:post).with '/users/identify',
19
+ payload
20
+
21
+ subject.perform(**payload)
22
+ end
23
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe BrazeRuby::REST::ScheduleMessages do
@@ -12,7 +14,7 @@ describe BrazeRuby::REST::ScheduleMessages do
12
14
 
13
15
  let(:api_key) { :api_key }
14
16
 
15
- subject { described_class.new(api_key, :rest_url, payload) }
17
+ subject { described_class.new(api_key, :rest_url, {}, **payload) }
16
18
 
17
19
  before { subject.http = http }
18
20
 
@@ -24,7 +26,6 @@ describe BrazeRuby::REST::ScheduleMessages do
24
26
 
25
27
  def expect_schedule_messages_http_call
26
28
  expect(http).to receive(:post).with '/messages/schedule/create', {
27
- api_key: api_key,
28
29
  external_user_ids: :external_user_ids,
29
30
  schedule: {
30
31
  time: :time,
@@ -1,18 +1,16 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe BrazeRuby::REST::SendMessages do
4
6
  let(:http) { double(:http) }
5
7
 
6
- let(:payload) {{
7
- messages: :messages,
8
- external_user_ids: :external_user_ids,
9
- }}
10
-
11
- let(:api_key) { :api_key }
12
-
13
- subject { described_class.new(api_key,
14
- messages: :messages,
15
- external_user_ids: :external_user_ids
8
+ subject { described_class.new(
9
+ :api_key,
10
+ :rest_url,
11
+ {},
12
+ messages: ["message"],
13
+ external_user_ids: ["1", "2"]
16
14
  ) }
17
15
 
18
16
  before { subject.http = http }
@@ -25,9 +23,8 @@ describe BrazeRuby::REST::SendMessages do
25
23
 
26
24
  def expect_send_messages_http_call
27
25
  expect(http).to receive(:post).with '/messages/send', {
28
- api_key: :api_key,
29
- messages: [],
30
- external_user_ids: [],
26
+ messages: ["message"],
27
+ external_user_ids: ["1", "2"],
31
28
  }
32
29
  end
33
30
  end
@@ -1,24 +1,27 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'spec_helper'
2
4
 
3
5
  describe BrazeRuby::REST::TrackUsers do
4
6
  let(:http) { double(:http) }
5
7
 
6
- let(:payload) {{
7
- attributes: :attributes,
8
- events: :events,
9
- purchases: :purchases
10
- }}
8
+ let(:payload) do
9
+ {
10
+ attributes: :attributes,
11
+ events: :events,
12
+ purchases: :purchases
13
+ }
14
+ end
11
15
 
12
16
  let(:api_key) { :api_key }
13
17
 
14
- subject { described_class.new :rest_url}
18
+ subject { described_class.new :api_key, :rest_url, {}}
15
19
 
16
20
  before { subject.http = http }
17
21
 
18
22
  it 'makes an http call to the track user endpoint' do
19
- expect(http).to receive(:post).with '/users/track',
20
- payload.merge({ api_key: :api_key })
23
+ expect(http).to receive(:post).with '/users/track', payload
21
24
 
22
- subject.perform(api_key, payload)
25
+ subject.perform(**payload)
23
26
  end
24
27
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  FactoryBot.define do
2
4
  factory :attribute, class: Hash do
3
5
  skip_create
@@ -5,14 +5,16 @@ http_interactions:
5
5
  uri: "<BRAZE_REST_URL>/campaigns/trigger/send"
6
6
  body:
7
7
  encoding: UTF-8
8
- string: '{"api_key":"<BRAZE_REST_API_KEY>","campaign_id":"69e9b681-779c-4b4c-b6b8-cd74b17d21d2","recipients":[{"external_user_id":132404,"trigger_properties":{"first_name":"John"}}]}'
8
+ string: '{"campaign_id":"d8b73da7-0b7c-fc72-1d80-e59c7f20f0d3","recipients":[{"external_user_id":12345,"trigger_properties":{"first_name":"John"}}]}'
9
9
  headers:
10
10
  Content-Type:
11
11
  - application/json
12
12
  Accept:
13
13
  - application/json
14
14
  User-Agent:
15
- - Braze Ruby gem v0.2.0
15
+ - Braze Ruby gem v0.3.3
16
+ Authorization:
17
+ - Bearer <BRAZE_REST_API_KEY>
16
18
  Accept-Encoding:
17
19
  - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
20
  response:
@@ -20,12 +22,16 @@ http_interactions:
20
22
  code: 201
21
23
  message: Created
22
24
  headers:
25
+ Connection:
26
+ - keep-alive
27
+ Content-Length:
28
+ - '94'
23
29
  Cache-Control:
24
30
  - max-age=0, private, must-revalidate
25
31
  Content-Type:
26
32
  - application/json
27
33
  Etag:
28
- - W/"838a7c62adda8d131d694ae13ba2c5b7"
34
+ - W/"b02a5788c87daf846d9cf451bf7f4e6d"
29
35
  Server:
30
36
  - nginx
31
37
  Strict-Transport-Security:
@@ -36,34 +42,30 @@ http_interactions:
36
42
  X-Ratelimit-Remaining:
37
43
  - '249998'
38
44
  X-Ratelimit-Reset:
39
- - '1567425600'
45
+ - '1592427600'
40
46
  X-Request-Id:
41
- - e6f14e03-5226-45f3-9a9f-901a0139b071
47
+ - ab80a33e-db36-4fe9-af89-6ce274df5edc
42
48
  X-Runtime:
43
- - '0.019114'
44
- Content-Length:
45
- - '46'
49
+ - '0.016803'
46
50
  Accept-Ranges:
47
51
  - bytes
48
52
  Date:
49
- - Mon, 02 Sep 2019 11:41:42 GMT
53
+ - Wed, 17 Jun 2020 20:04:46 GMT
50
54
  Via:
51
55
  - 1.1 varnish
52
- Connection:
53
- - keep-alive
54
56
  X-Served-By:
55
- - cache-hhn4029-HHN
57
+ - cache-hhn4039-HHN
56
58
  X-Cache:
57
59
  - MISS
58
60
  X-Cache-Hits:
59
61
  - '0'
60
62
  X-Timer:
61
- - S1567424502.370259,VS0,VE27
63
+ - S1592424287.720589,VS0,VE19
62
64
  Vary:
63
65
  - Origin,Accept-Encoding
64
66
  body:
65
67
  encoding: ASCII-8BIT
66
- string: '{"message":"success"}'
68
+ string: '{"dispatch_id":"14497aa4b013bf150881547fb3076fd6","message":"success"}'
67
69
  http_version:
68
- recorded_at: Mon, 02 Sep 2019 11:41:42 GMT
70
+ recorded_at: Wed, 17 Jun 2020 20:04:46 GMT
69
71
  recorded_with: VCR 5.0.0