bookingsync-api 0.1.8 → 0.1.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +13 -0
- data/lib/bookingsync/api/client.rb +21 -0
- data/lib/bookingsync/api/client/conversations.rb +75 -0
- data/lib/bookingsync/api/client/hosts.rb +51 -0
- data/lib/bookingsync/api/client/messages.rb +51 -0
- data/lib/bookingsync/api/client/participants.rb +51 -0
- data/lib/bookingsync/api/version.rb +1 -1
- data/spec/bookingsync/api/client/conversations_spec.rb +124 -0
- data/spec/bookingsync/api/client/hosts_spec.rb +79 -0
- data/spec/bookingsync/api/client/messages_spec.rb +77 -0
- data/spec/bookingsync/api/client/participants_spec.rb +77 -0
- data/spec/bookingsync/api/client_spec.rb +42 -0
- data/spec/fixtures/cassettes/BookingSync_API_Client_Conversations/_connect_booking_to_conversation/connects_given_conversation_with_booking.yml +154 -0
- data/spec/fixtures/cassettes/BookingSync_API_Client_Conversations/_conversation/returns_a_single_conversation.yml +82 -0
- data/spec/fixtures/cassettes/BookingSync_API_Client_Conversations/_conversations/returns_conversations.yml +83 -0
- data/spec/fixtures/cassettes/BookingSync_API_Client_Conversations/_create_conversation/creates_a_new_conversation.yml +81 -0
- data/spec/fixtures/cassettes/BookingSync_API_Client_Conversations/_disconnect_booking_from_conversation/disconnects_given_conversation_from_booking.yml +154 -0
- data/spec/fixtures/cassettes/BookingSync_API_Client_Conversations/_edit_conversation/updates_given_conversation_by_ID.yml +74 -0
- data/spec/fixtures/cassettes/BookingSync_API_Client_Hosts/_create_host/creates_a_new_host.yml +80 -0
- data/spec/fixtures/cassettes/BookingSync_API_Client_Hosts/_edit_host/updates_given_host_by_ID.yml +73 -0
- data/spec/fixtures/cassettes/BookingSync_API_Client_Hosts/_host/returns_a_single_host.yml +82 -0
- data/spec/fixtures/cassettes/BookingSync_API_Client_Hosts/_hosts/returns_hosts.yml +82 -0
- data/spec/fixtures/cassettes/BookingSync_API_Client_Messages/_create_message/creates_a_new_message.yml +81 -0
- data/spec/fixtures/cassettes/BookingSync_API_Client_Messages/_edit_message/updates_given_message_by_ID.yml +74 -0
- data/spec/fixtures/cassettes/BookingSync_API_Client_Messages/_message/returns_a_single_message.yml +82 -0
- data/spec/fixtures/cassettes/BookingSync_API_Client_Messages/_messages/returns_messages.yml +82 -0
- data/spec/fixtures/cassettes/BookingSync_API_Client_Participants/_create_participant/creates_a_new_participant.yml +80 -0
- data/spec/fixtures/cassettes/BookingSync_API_Client_Participants/_edit_participant/updates_given_participant_by_ID.yml +73 -0
- data/spec/fixtures/cassettes/BookingSync_API_Client_Participants/_participant/returns_a_single_participant.yml +82 -0
- data/spec/fixtures/cassettes/BookingSync_API_Client_Participants/_participants/returns_participants.yml +82 -0
- metadata +50 -2
@@ -0,0 +1,79 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe BookingSync::API::Client::Hosts do
|
4
|
+
let(:client) { BookingSync::API::Client.new(test_access_token) }
|
5
|
+
|
6
|
+
before { |ex| @casette_base_path = casette_path(casette_dir, ex.metadata) }
|
7
|
+
|
8
|
+
describe ".hosts", :vcr do
|
9
|
+
it "returns hosts" do
|
10
|
+
expect(client.hosts).not_to be_empty
|
11
|
+
assert_requested :get, bs_url("hosts")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe ".host", :vcr do
|
16
|
+
let(:prefetched_host_id) {
|
17
|
+
find_resource("#{@casette_base_path}_hosts/returns_hosts.yml", "hosts")[:id]
|
18
|
+
}
|
19
|
+
|
20
|
+
it "returns a single host" do
|
21
|
+
host = client.host(prefetched_host_id)
|
22
|
+
expect(host.id).to eq prefetched_host_id
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe ".create_host", :vcr do
|
27
|
+
let(:user) { BookingSync::API::Resource.new(client, id: 1) }
|
28
|
+
let(:source) { BookingSync::API::Resource.new(client, id: 1) }
|
29
|
+
let(:attributes) do
|
30
|
+
{
|
31
|
+
email: "host_email@example.com",
|
32
|
+
firstname: "John",
|
33
|
+
lastname: "Doe",
|
34
|
+
user_id: user.id,
|
35
|
+
source_id: source.id
|
36
|
+
}
|
37
|
+
end
|
38
|
+
|
39
|
+
it "creates a new host" do
|
40
|
+
client.create_host(attributes)
|
41
|
+
assert_requested :post, bs_url("hosts"),
|
42
|
+
body: { hosts: [attributes] }.to_json
|
43
|
+
end
|
44
|
+
|
45
|
+
it "returns newly created host" do
|
46
|
+
VCR.use_cassette("BookingSync_API_Client_Hosts/_create_host/creates_a_new_host") do
|
47
|
+
host = client.create_host(attributes)
|
48
|
+
expect(host.email).to eq("host_email@example.com")
|
49
|
+
expect(host.lastname).to eq("Doe")
|
50
|
+
expect(host.firstname).to eq("John")
|
51
|
+
expect(host.links.user).to eq(user.id)
|
52
|
+
expect(host.links.source).to eq(source.id)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe ".edit_host", :vcr do
|
58
|
+
let(:attributes) {
|
59
|
+
{ firstname: "Johnny" }
|
60
|
+
}
|
61
|
+
let(:created_host_id) {
|
62
|
+
find_resource("#{@casette_base_path}_create_host/creates_a_new_host.yml", "hosts")[:id]
|
63
|
+
}
|
64
|
+
|
65
|
+
it "updates given host by ID" do
|
66
|
+
client.edit_host(created_host_id, attributes)
|
67
|
+
assert_requested :put, bs_url("hosts/#{created_host_id}"),
|
68
|
+
body: { hosts: [attributes] }.to_json
|
69
|
+
end
|
70
|
+
|
71
|
+
it "returns updated host" do
|
72
|
+
VCR.use_cassette("BookingSync_API_Client_Hosts/_edit_host/updates_given_host_by_ID") do
|
73
|
+
host = client.edit_host(created_host_id, attributes)
|
74
|
+
expect(host).to be_kind_of(BookingSync::API::Resource)
|
75
|
+
expect(host.firstname).to eq("Johnny")
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe BookingSync::API::Client::Messages do
|
4
|
+
let(:client) { BookingSync::API::Client.new(test_access_token) }
|
5
|
+
|
6
|
+
before { |ex| @casette_base_path = casette_path(casette_dir, ex.metadata) }
|
7
|
+
|
8
|
+
describe ".messages", :vcr do
|
9
|
+
it "returns messages" do
|
10
|
+
expect(client.messages).not_to be_empty
|
11
|
+
assert_requested :get, bs_url("inbox/messages")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe ".message", :vcr do
|
16
|
+
let(:prefetched_message_id) {
|
17
|
+
find_resource("#{@casette_base_path}_messages/returns_messages.yml", "messages")[:id]
|
18
|
+
}
|
19
|
+
|
20
|
+
it "returns a single message" do
|
21
|
+
message = client.message(prefetched_message_id)
|
22
|
+
expect(message.id).to eq prefetched_message_id
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe ".create_message", :vcr do
|
27
|
+
let(:conversation) { BookingSync::API::Resource.new(client, id: 1) }
|
28
|
+
let(:participant) { BookingSync::API::Resource.new(client, id: 1) }
|
29
|
+
let(:attributes) do
|
30
|
+
{
|
31
|
+
content: "Message content",
|
32
|
+
origin: "homeaway",
|
33
|
+
visibility: "all",
|
34
|
+
conversation_id: conversation.id,
|
35
|
+
sender_id: participant.id
|
36
|
+
}
|
37
|
+
end
|
38
|
+
|
39
|
+
it "creates a new message" do
|
40
|
+
client.create_message(attributes)
|
41
|
+
assert_requested :post, bs_url("inbox/messages"),
|
42
|
+
body: { messages: [attributes] }.to_json
|
43
|
+
end
|
44
|
+
|
45
|
+
it "returns newly created message" do
|
46
|
+
VCR.use_cassette("BookingSync_API_Client_Messages/_create_message/creates_a_new_message") do
|
47
|
+
message = client.create_message(attributes)
|
48
|
+
expect(message.content).to eq("Message content")
|
49
|
+
expect(message.origin).to eq("homeaway")
|
50
|
+
expect(message.visibility).to eq("all")
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe ".edit_message", :vcr do
|
56
|
+
let(:attributes) {
|
57
|
+
{ content: "Updated message content" }
|
58
|
+
}
|
59
|
+
let(:created_message_id) {
|
60
|
+
find_resource("#{@casette_base_path}_create_message/creates_a_new_message.yml", "messages")[:id]
|
61
|
+
}
|
62
|
+
|
63
|
+
it "updates given message by ID" do
|
64
|
+
client.edit_message(created_message_id, attributes)
|
65
|
+
assert_requested :put, bs_url("inbox/messages/#{created_message_id}"),
|
66
|
+
body: { messages: [attributes] }.to_json
|
67
|
+
end
|
68
|
+
|
69
|
+
it "returns updated message" do
|
70
|
+
VCR.use_cassette("BookingSync_API_Client_Messages/_edit_message/updates_given_message_by_ID") do
|
71
|
+
message = client.edit_message(created_message_id, attributes)
|
72
|
+
expect(message).to be_kind_of(BookingSync::API::Resource)
|
73
|
+
expect(message.content).to eq("Updated message content")
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -0,0 +1,77 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe BookingSync::API::Client::Participants do
|
4
|
+
let(:client) { BookingSync::API::Client.new(test_access_token) }
|
5
|
+
|
6
|
+
before { |ex| @casette_base_path = casette_path(casette_dir, ex.metadata) }
|
7
|
+
|
8
|
+
describe ".participants", :vcr do
|
9
|
+
it "returns participants" do
|
10
|
+
expect(client.participants).not_to be_empty
|
11
|
+
assert_requested :get, bs_url("inbox/participants")
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
describe ".participant", :vcr do
|
16
|
+
let(:prefetched_participant_id) {
|
17
|
+
find_resource("#{@casette_base_path}_participants/returns_participants.yml", "participants")[:id]
|
18
|
+
}
|
19
|
+
|
20
|
+
it "returns a single participant" do
|
21
|
+
participant = client.participant(prefetched_participant_id)
|
22
|
+
expect(participant.id).to eq prefetched_participant_id
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe ".create_participant", :vcr do
|
27
|
+
let(:conversation) { BookingSync::API::Resource.new(client, id: 1) }
|
28
|
+
let(:member) { BookingSync::API::Resource.new(client, id: 1, type: "Client") }
|
29
|
+
let(:attributes) do
|
30
|
+
{
|
31
|
+
read: false,
|
32
|
+
conversation_id: conversation.id,
|
33
|
+
member_id: member.id,
|
34
|
+
member_type: member.type
|
35
|
+
}
|
36
|
+
end
|
37
|
+
|
38
|
+
it "creates a new participant" do
|
39
|
+
client.create_participant(attributes)
|
40
|
+
assert_requested :post, bs_url("inbox/participants"),
|
41
|
+
body: { participants: [attributes] }.to_json
|
42
|
+
end
|
43
|
+
|
44
|
+
it "returns newly created participant" do
|
45
|
+
VCR.use_cassette("BookingSync_API_Client_Participants/_create_participant/creates_a_new_participant") do
|
46
|
+
participant = client.create_participant(attributes)
|
47
|
+
expect(participant[:links][:conversation]).to eq(conversation.id)
|
48
|
+
expect(participant[:links][:member][:id]).to eq(member.id)
|
49
|
+
expect(participant[:links][:member][:type]).to eq(member.type)
|
50
|
+
expect(participant.read_at).to be_nil
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
describe ".edit_participant", :vcr do
|
56
|
+
let(:attributes) do
|
57
|
+
{ read: true }
|
58
|
+
end
|
59
|
+
let(:created_participant_id) {
|
60
|
+
find_resource("#{@casette_base_path}_create_participant/creates_a_new_participant.yml", "participants")[:id]
|
61
|
+
}
|
62
|
+
|
63
|
+
it "updates given participant by ID" do
|
64
|
+
client.edit_participant(created_participant_id, attributes)
|
65
|
+
assert_requested :put, bs_url("inbox/participants/#{created_participant_id}"),
|
66
|
+
body: { participants: [attributes] }.to_json
|
67
|
+
end
|
68
|
+
|
69
|
+
it "returns updated participant" do
|
70
|
+
VCR.use_cassette("BookingSync_API_Client_Participants/_edit_participant/updates_given_participant_by_ID") do
|
71
|
+
participant = client.edit_participant(created_participant_id, attributes)
|
72
|
+
expect(participant).to be_kind_of(BookingSync::API::Resource)
|
73
|
+
expect(participant.read_at.to_s).not_to be_empty
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
@@ -308,4 +308,46 @@ describe BookingSync::API::Client do
|
|
308
308
|
end
|
309
309
|
end
|
310
310
|
end
|
311
|
+
|
312
|
+
describe "with_headers" do
|
313
|
+
it "makes request with modified headers but resets to original headers at the end" do
|
314
|
+
stub_get("resource")
|
315
|
+
client.with_headers("x-awesome-header" => "you-bet-i-am") do |adjusted_api_client|
|
316
|
+
adjusted_api_client.get("resource")
|
317
|
+
end
|
318
|
+
assert_requested(:get, bs_url("resource")) do |request|
|
319
|
+
request.headers["X-Awesome-Header"] == "you-bet-i-am"
|
320
|
+
end
|
321
|
+
|
322
|
+
client.get("resource")
|
323
|
+
assert_requested(:get, bs_url("resource")) do |request|
|
324
|
+
!request.headers.key?("X-Awesome-Header")
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
328
|
+
it "properly brings back original headers even if it was overriden" do
|
329
|
+
stub_get("resource")
|
330
|
+
client.with_headers("Content-Type" => "another-content-type") do |adjusted_api_client|
|
331
|
+
adjusted_api_client.get("resource")
|
332
|
+
end
|
333
|
+
assert_requested(:get, bs_url("resource")) do |request|
|
334
|
+
request.headers["Content-Type"] == "another-content-type"
|
335
|
+
end
|
336
|
+
|
337
|
+
client.get("resource")
|
338
|
+
assert_requested(:get, bs_url("resource")) do |request|
|
339
|
+
request.headers["Content-Type"] == BookingSync::API::Client::MEDIA_TYPE
|
340
|
+
end
|
341
|
+
end
|
342
|
+
|
343
|
+
it "returns result of method called on adjusted client" do
|
344
|
+
stub_get("resource", body: { resources: [{ name: "Megan" }] }.to_json)
|
345
|
+
resources = client.with_headers("x-awesome-header" => "you-bet-i-am") do |adjusted_api_client|
|
346
|
+
adjusted_api_client.get("resource")
|
347
|
+
end
|
348
|
+
expect(resources).to be_kind_of(Array)
|
349
|
+
expect(resources.first).to be_a BookingSync::API::Resource
|
350
|
+
expect(resources.first.name).to eq("Megan")
|
351
|
+
end
|
352
|
+
end
|
311
353
|
end
|
@@ -0,0 +1,154 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://www.bookingsync.com/api/v3/inbox/conversations/1
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: "{}"
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- BookingSync API gem v0.1.8
|
12
|
+
Accept:
|
13
|
+
- application/vnd.api+json
|
14
|
+
Content-Type:
|
15
|
+
- application/vnd.api+json
|
16
|
+
Authorization:
|
17
|
+
- Bearer <<ACCESS_TOKEN>>
|
18
|
+
Accept-Encoding:
|
19
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
20
|
+
Connection:
|
21
|
+
- keep-alive
|
22
|
+
Keep-Alive:
|
23
|
+
- 30
|
24
|
+
response:
|
25
|
+
status:
|
26
|
+
code: 200
|
27
|
+
message: OK
|
28
|
+
headers:
|
29
|
+
Cache-Control:
|
30
|
+
- max-age=0, private, must-revalidate
|
31
|
+
Content-Type:
|
32
|
+
- application/vnd.api+json; charset=utf-8
|
33
|
+
Etag:
|
34
|
+
- W/"1aa40533aa8efe41130569a9fe0ece01"
|
35
|
+
Link:
|
36
|
+
- <https://www.bookingsync.com/api/v3/inbox/conversations/1?page=1>; rel="first",
|
37
|
+
<https://www.bookingsync.com/api/v3/inbox/conversations/1?page=1>; rel="last"
|
38
|
+
P3p:
|
39
|
+
- CP="OTI DSP COR CUR ADMo DEVo TAI PSAi PSDi IVAi IVDi CONi HISi TELi OTPi
|
40
|
+
OUR SAMi OTRo UNRo PUBi IND UNI STA"
|
41
|
+
Set-Cookie:
|
42
|
+
- ahoy_track=true; path=/
|
43
|
+
- ahoy_visit=b2442041-4695-4cfb-8a7d-7f3313432b94; path=/; expires=Mon, 02 Apr
|
44
|
+
2018 19:27:29 -0000
|
45
|
+
- ahoy_visitor=686a80d0-2ee7-4a2e-8c22-71641773b7a7; path=/; expires=Thu, 26
|
46
|
+
Mar 2020 19:27:29 -0000
|
47
|
+
Vary:
|
48
|
+
- Origin
|
49
|
+
X-Content-Type-Options:
|
50
|
+
- nosniff
|
51
|
+
X-Frame-Options:
|
52
|
+
- SAMEORIGIN
|
53
|
+
X-Per-Page:
|
54
|
+
- '100'
|
55
|
+
X-Ratelimit-Limit:
|
56
|
+
- '1000'
|
57
|
+
X-Ratelimit-Remaining:
|
58
|
+
- '987'
|
59
|
+
X-Ratelimit-Reset:
|
60
|
+
- '1522094400'
|
61
|
+
X-Request-Id:
|
62
|
+
- 14551de3-b427-4949-b595-c0b3c82a007b
|
63
|
+
X-Runtime:
|
64
|
+
- '0.274481'
|
65
|
+
X-Total-Count:
|
66
|
+
- '1'
|
67
|
+
X-Total-Pages:
|
68
|
+
- '1'
|
69
|
+
X-Updated-Since-Request-Synced-At:
|
70
|
+
- 2018-03-26 19:27:29 UTC
|
71
|
+
X-Xss-Protection:
|
72
|
+
- 1; mode=block
|
73
|
+
Date:
|
74
|
+
- Mon, 26 Mar 2018 19:27:30 GMT
|
75
|
+
Content-Length:
|
76
|
+
- '987'
|
77
|
+
body:
|
78
|
+
encoding: UTF-8
|
79
|
+
string: '{"links":{"conversations.account":"https://www.bookingsync.com/api/v3/accounts/{conversations.account}","conversations.assignee":"https://www.bookingsync.com/api/v3/users/{conversations.assignee}","conversations.source":"https://www.bookingsync.com/api/v3/sources/{conversations.source}","conversations.bookings":"https://www.bookingsync.com/api/v3/bookings/{conversations.bookings}","conversations.inquiries":"https://www.bookingsync.com/api/v3/inquiries/{conversations.inquiries}"},"conversations":[{"links":{"account":3,"assignee":null,"bookings":[],"inquiries":[],"source":null},"closed_at":null,"created_at":"2018-03-25T22:01:11Z","deadline_response_at":null,"id":1,"last_message_at":null,"marked_as_spam_at":null,"subject":"super
|
80
|
+
important convo","updated_at":"2018-03-26T18:21:37Z"}],"meta":{"Link":{"first":"https://www.bookingsync.com/api/v3/inbox/conversations/1?page=1","last":"https://www.bookingsync.com/api/v3/inbox/conversations/1?page=1"},"X-Total-Pages":"1","X-Total-Count":"1","X-Per-Page":"100"}}'
|
81
|
+
http_version:
|
82
|
+
recorded_at: Mon, 26 Mar 2018 19:27:30 GMT
|
83
|
+
- request:
|
84
|
+
method: put
|
85
|
+
uri: https://www.bookingsync.com/api/v3/inbox/conversations/1/connect_booking
|
86
|
+
body:
|
87
|
+
encoding: UTF-8
|
88
|
+
string: '{"bookings":[{"id":40}]}'
|
89
|
+
headers:
|
90
|
+
User-Agent:
|
91
|
+
- BookingSync API gem v0.1.8
|
92
|
+
Accept:
|
93
|
+
- application/vnd.api+json
|
94
|
+
Content-Type:
|
95
|
+
- application/vnd.api+json
|
96
|
+
Authorization:
|
97
|
+
- Bearer <<ACCESS_TOKEN>>
|
98
|
+
Accept-Encoding:
|
99
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
100
|
+
Connection:
|
101
|
+
- keep-alive
|
102
|
+
Keep-Alive:
|
103
|
+
- 30
|
104
|
+
response:
|
105
|
+
status:
|
106
|
+
code: 200
|
107
|
+
message: OK
|
108
|
+
headers:
|
109
|
+
Cache-Control:
|
110
|
+
- max-age=0, private, must-revalidate
|
111
|
+
Content-Type:
|
112
|
+
- application/vnd.api+json; charset=utf-8
|
113
|
+
Etag:
|
114
|
+
- W/"12bfe4010f5f44629df73dbd7fb5fbb8"
|
115
|
+
P3p:
|
116
|
+
- CP="OTI DSP COR CUR ADMo DEVo TAI PSAi PSDi IVAi IVDi CONi HISi TELi OTPi
|
117
|
+
OUR SAMi OTRo UNRo PUBi IND UNI STA"
|
118
|
+
Set-Cookie:
|
119
|
+
- ahoy_track=true; path=/
|
120
|
+
- ahoy_visit=d19a9ccd-4cf2-4382-8eab-790fa04b680a; path=/; expires=Mon, 02 Apr
|
121
|
+
2018 19:27:30 -0000
|
122
|
+
- ahoy_visitor=cee3b7d8-9662-4aee-a569-75ce739c39f5; path=/; expires=Thu, 26
|
123
|
+
Mar 2020 19:27:30 -0000
|
124
|
+
Vary:
|
125
|
+
- Origin
|
126
|
+
X-Content-Type-Options:
|
127
|
+
- nosniff
|
128
|
+
X-Frame-Options:
|
129
|
+
- SAMEORIGIN
|
130
|
+
X-Ratelimit-Limit:
|
131
|
+
- '1000'
|
132
|
+
X-Ratelimit-Remaining:
|
133
|
+
- '986'
|
134
|
+
X-Ratelimit-Reset:
|
135
|
+
- '1522094400'
|
136
|
+
X-Request-Id:
|
137
|
+
- 4e1de53f-34ed-4cf4-98cd-5c291d114531
|
138
|
+
X-Runtime:
|
139
|
+
- '0.291914'
|
140
|
+
X-Updated-Since-Request-Synced-At:
|
141
|
+
- 2018-03-26 19:27:30 UTC
|
142
|
+
X-Xss-Protection:
|
143
|
+
- 1; mode=block
|
144
|
+
Date:
|
145
|
+
- Mon, 26 Mar 2018 19:27:30 GMT
|
146
|
+
Content-Length:
|
147
|
+
- '783'
|
148
|
+
body:
|
149
|
+
encoding: UTF-8
|
150
|
+
string: '{"links":{"conversations.account":"https://www.bookingsync.com/api/v3/accounts/{conversations.account}","conversations.assignee":"https://www.bookingsync.com/api/v3/users/{conversations.assignee}","conversations.source":"https://www.bookingsync.com/api/v3/sources/{conversations.source}","conversations.bookings":"https://www.bookingsync.com/api/v3/bookings/{conversations.bookings}","conversations.inquiries":"https://www.bookingsync.com/api/v3/inquiries/{conversations.inquiries}"},"conversations":[{"links":{"account":3,"assignee":null,"bookings":[40],"inquiries":[],"source":null},"closed_at":null,"created_at":"2018-03-25T22:01:11Z","deadline_response_at":null,"id":1,"last_message_at":null,"marked_as_spam_at":null,"subject":"super
|
151
|
+
important convo","updated_at":"2018-03-26T18:21:37Z"}],"meta":{}}'
|
152
|
+
http_version:
|
153
|
+
recorded_at: Mon, 26 Mar 2018 19:27:30 GMT
|
154
|
+
recorded_with: VCR 3.0.3
|
@@ -0,0 +1,82 @@
|
|
1
|
+
---
|
2
|
+
http_interactions:
|
3
|
+
- request:
|
4
|
+
method: get
|
5
|
+
uri: https://www.bookingsync.com/api/v3/inbox/conversations/1
|
6
|
+
body:
|
7
|
+
encoding: UTF-8
|
8
|
+
string: "{}"
|
9
|
+
headers:
|
10
|
+
User-Agent:
|
11
|
+
- BookingSync API gem v0.1.8
|
12
|
+
Accept:
|
13
|
+
- application/vnd.api+json
|
14
|
+
Content-Type:
|
15
|
+
- application/vnd.api+json
|
16
|
+
Authorization:
|
17
|
+
- Bearer <<ACCESS_TOKEN>>
|
18
|
+
Accept-Encoding:
|
19
|
+
- gzip;q=1.0,deflate;q=0.6,identity;q=0.3
|
20
|
+
Connection:
|
21
|
+
- keep-alive
|
22
|
+
Keep-Alive:
|
23
|
+
- '30'
|
24
|
+
response:
|
25
|
+
status:
|
26
|
+
code: 200
|
27
|
+
message: OK
|
28
|
+
headers:
|
29
|
+
Cache-Control:
|
30
|
+
- max-age=0, private, must-revalidate
|
31
|
+
Content-Type:
|
32
|
+
- application/vnd.api+json; charset=utf-8
|
33
|
+
Etag:
|
34
|
+
- W/"879f28db484e52f23872a2d1f8783126"
|
35
|
+
Link:
|
36
|
+
- <https://www.bookingsync.com/api/v3/inbox/conversations/1?page=1>; rel="first",
|
37
|
+
<https://www.bookingsync.com/api/v3/inbox/conversations/1?page=1>; rel="last"
|
38
|
+
P3p:
|
39
|
+
- CP="OTI DSP COR CUR ADMo DEVo TAI PSAi PSDi IVAi IVDi CONi HISi TELi OTPi
|
40
|
+
OUR SAMi OTRo UNRo PUBi IND UNI STA"
|
41
|
+
Set-Cookie:
|
42
|
+
- ahoy_track=true; path=/
|
43
|
+
- ahoy_visit=563c3c61-5201-43b0-a08f-618b8839e67e; path=/; expires=Fri, 30 Mar
|
44
|
+
2018 19:00:42 -0000
|
45
|
+
- ahoy_visitor=e108871e-16b0-44c9-a285-4c30bab2e4e9; path=/; expires=Mon, 23
|
46
|
+
Mar 2020 19:00:42 -0000
|
47
|
+
Vary:
|
48
|
+
- Origin
|
49
|
+
X-Content-Type-Options:
|
50
|
+
- nosniff
|
51
|
+
X-Frame-Options:
|
52
|
+
- SAMEORIGIN
|
53
|
+
X-Per-Page:
|
54
|
+
- '100'
|
55
|
+
X-Ratelimit-Limit:
|
56
|
+
- '1000'
|
57
|
+
X-Ratelimit-Remaining:
|
58
|
+
- '999'
|
59
|
+
X-Ratelimit-Reset:
|
60
|
+
- '1521835200'
|
61
|
+
X-Request-Id:
|
62
|
+
- 7b2ccbae-2056-4b79-b6ca-555cbf986b25
|
63
|
+
X-Runtime:
|
64
|
+
- '0.159087'
|
65
|
+
X-Total-Count:
|
66
|
+
- '1'
|
67
|
+
X-Total-Pages:
|
68
|
+
- '1'
|
69
|
+
X-Updated-Since-Request-Synced-At:
|
70
|
+
- 2018-03-23 19:00:42 UTC
|
71
|
+
X-Xss-Protection:
|
72
|
+
- 1; mode=block
|
73
|
+
Date:
|
74
|
+
- Fri, 23 Mar 2018 19:00:42 GMT
|
75
|
+
Content-Length:
|
76
|
+
- '996'
|
77
|
+
body:
|
78
|
+
encoding: UTF-8
|
79
|
+
string: '{"links":{"conversations.account":"https://www.bookingsync.com/api/v3/accounts/{conversations.account}","conversations.assignee":"https://www.bookingsync.com/api/v3/users/{conversations.assignee}","conversations.source":"https://www.bookingsync.com/api/v3/sources/{conversations.source}","conversations.bookings":"https://www.bookingsync.com/api/v3/bookings/{conversations.bookings}","conversations.inquiries":"https://www.bookingsync.com/api/v3/inquiries/{conversations.inquiries}"},"conversations":[{"links":{"account":1,"assignee":null,"bookings":[],"inquiries":[],"source":null},"closed_at":null,"created_at":"2018-03-20T13:45:55Z","deadline_response_at":null,"id":1,"last_message_at":null,"marked_as_spam_at":null,"subject":null,"updated_at":"2018-03-20T13:45:55Z"}],"meta":{"Link":{"first":"https://www.bookingsync.com/api/v3/inbox/conversations/1?page=1","last":"https://www.bookingsync.com/api/v3/inbox/conversations/1?page=1"},"X-Total-Pages":"1","X-Total-Count":"1","X-Per-Page":"100"}}'
|
80
|
+
http_version:
|
81
|
+
recorded_at: Fri, 23 Mar 2018 19:00:42 GMT
|
82
|
+
recorded_with: VCR 4.0.0
|