dnsimple 3.1.0 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -0
  3. data/.rubocop_dnsimple.yml +24 -18
  4. data/CHANGELOG.md +17 -5
  5. data/CONTRIBUTING.md +2 -2
  6. data/Gemfile +0 -1
  7. data/README.md +14 -3
  8. data/dnsimple.gemspec +1 -1
  9. data/lib/dnsimple/client.rb +5 -5
  10. data/lib/dnsimple/client/certificates.rb +89 -0
  11. data/lib/dnsimple/client/clients.rb +37 -0
  12. data/lib/dnsimple/client/collaborators.rb +76 -0
  13. data/lib/dnsimple/client/domains_pushes.rb +97 -0
  14. data/lib/dnsimple/client/registrar.rb +2 -2
  15. data/lib/dnsimple/client/registrar_delegation.rb +42 -0
  16. data/lib/dnsimple/client/services_domains.rb +82 -0
  17. data/lib/dnsimple/client/templates.rb +0 -5
  18. data/lib/dnsimple/client/templates_domains.rb +29 -0
  19. data/lib/dnsimple/client/vanity_name_servers.rb +47 -0
  20. data/lib/dnsimple/client/zones.rb +17 -0
  21. data/lib/dnsimple/client/zones_records.rb +9 -9
  22. data/lib/dnsimple/struct.rb +6 -1
  23. data/lib/dnsimple/struct/certificate.rb +37 -0
  24. data/lib/dnsimple/struct/certificate_bundle.rb +24 -0
  25. data/lib/dnsimple/struct/collaborator.rb +34 -0
  26. data/lib/dnsimple/struct/domain_push.rb +28 -0
  27. data/lib/dnsimple/struct/tld.rb +12 -0
  28. data/lib/dnsimple/struct/zone_file.rb +10 -0
  29. data/lib/dnsimple/struct/{record.rb → zone_record.rb} +4 -1
  30. data/lib/dnsimple/version.rb +1 -1
  31. data/spec/dnsimple/client/accounts_spec.rb +1 -1
  32. data/spec/dnsimple/client/certificates_spec.rb +206 -0
  33. data/spec/dnsimple/client/collaborators_spec.rb +162 -0
  34. data/spec/dnsimple/client/contacts_spec.rb +5 -5
  35. data/spec/dnsimple/client/domains_email_forwards_spec.rb +5 -5
  36. data/spec/dnsimple/client/domains_pushes_spec.rb +162 -0
  37. data/spec/dnsimple/client/domains_spec.rb +6 -6
  38. data/spec/dnsimple/client/registrar_delegation_spec.rb +51 -0
  39. data/spec/dnsimple/client/registrar_spec.rb +6 -6
  40. data/spec/dnsimple/client/registrar_whois_privacy_spec.rb +4 -4
  41. data/spec/dnsimple/client/services_domains_spec.rb +115 -0
  42. data/spec/dnsimple/client/services_spec.rb +1 -1
  43. data/spec/dnsimple/client/templates_domains_spec.rb +32 -0
  44. data/spec/dnsimple/client/templates_records_spec.rb +1 -1
  45. data/spec/dnsimple/client/templates_spec.rb +25 -1
  46. data/spec/dnsimple/client/tlds_spec.rb +8 -4
  47. data/spec/dnsimple/client/vanity_name_servers_spec.rb +54 -0
  48. data/spec/dnsimple/client/webhooks_spec.rb +2 -2
  49. data/spec/dnsimple/client/zones_records_spec.rb +34 -23
  50. data/spec/dnsimple/client/zones_spec.rb +40 -4
  51. data/spec/fixtures.http/acceptPush/success.http +17 -0
  52. data/spec/fixtures.http/addCollaborator/invite-success.http +21 -0
  53. data/spec/fixtures.http/addCollaborator/success.http +21 -0
  54. data/spec/fixtures.http/appliedServices/success.http +21 -0
  55. data/spec/fixtures.http/applyService/created.http +17 -0
  56. data/spec/fixtures.http/applyTemplate/success.http +13 -0
  57. data/spec/fixtures.http/changeDomainDelegationFromVanity/success.http +17 -0
  58. data/spec/fixtures.http/changeDomainDelegationToVanity/success.http +21 -0
  59. data/spec/fixtures.http/createZoneRecord/created.http +13 -9
  60. data/spec/fixtures.http/disableVanityNameServers/success.http +17 -0
  61. data/spec/fixtures.http/downloadCertificate/success.http +21 -0
  62. data/spec/fixtures.http/enableVanityNameServers/success.http +21 -0
  63. data/spec/fixtures.http/getCertificate/success.http +21 -0
  64. data/spec/fixtures.http/getCertificatePrivateKey/success.http +21 -0
  65. data/spec/fixtures.http/getTld/success.http +13 -9
  66. data/spec/fixtures.http/getZoneFile/success.http +21 -0
  67. data/spec/fixtures.http/getZoneRecord/success.http +13 -9
  68. data/spec/fixtures.http/initiatePush/success.http +21 -0
  69. data/spec/fixtures.http/{accounts → listAccounts}/success-account.http +0 -0
  70. data/spec/fixtures.http/{accounts → listAccounts}/success-user.http +0 -0
  71. data/spec/fixtures.http/listCertificates/success.http +21 -0
  72. data/spec/fixtures.http/listCollaborators/success.http +21 -0
  73. data/spec/fixtures.http/listPushes/success.http +21 -0
  74. data/spec/fixtures.http/listTlds/success.http +13 -9
  75. data/spec/fixtures.http/listZoneRecords/success.http +13 -9
  76. data/spec/fixtures.http/notfound-certificate.http +16 -0
  77. data/spec/fixtures.http/notfound-collaborator.http +16 -0
  78. data/spec/fixtures.http/notfound-contact.http +1 -1
  79. data/spec/fixtures.http/notfound-domainpush.http +12 -0
  80. data/spec/fixtures.http/rejectPush/success.http +17 -0
  81. data/spec/fixtures.http/removeCollaborator/success.http +17 -0
  82. data/spec/fixtures.http/unapplyService/success.http +17 -0
  83. data/spec/fixtures.http/updateZoneRecord/success.http +13 -9
  84. metadata +80 -10
@@ -42,7 +42,7 @@ describe Dnsimple::Client, ".services" do
42
42
 
43
43
  response.data.each do |service|
44
44
  expect(service).to be_a(Dnsimple::Struct::Service)
45
- expect(service.id).to be_a(Fixnum)
45
+ expect(service.id).to be_a(Integer)
46
46
  expect(service.name).to be_a(String)
47
47
  expect(service.short_name).to be_a(String)
48
48
  expect(service.description).to be_a(String)
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe Dnsimple::Client, ".templates" do
4
+
5
+ subject { described_class.new(base_url: "https://api.dnsimple.test", access_token: "a1b2c3").templates }
6
+
7
+
8
+ describe "#apply_template" do
9
+ let(:account_id) { 1010 }
10
+ let(:template_id) { 5410 }
11
+ let(:domain_id) { 'example.com' }
12
+
13
+ before do
14
+ stub_request(:post, %r{/v2/#{account_id}/domains/#{domain_id}/templates/#{template_id}$}).
15
+ to_return(read_http_fixture("applyTemplate/success.http"))
16
+ end
17
+
18
+ it "builds the correct request" do
19
+ subject.apply_template(account_id, template_id, domain_id)
20
+
21
+ expect(WebMock).to have_requested(:post, "https://api.dnsimple.test/v2/#{account_id}/domains/#{domain_id}/templates/#{template_id}").
22
+ with(headers: { "Accept" => "application/json" })
23
+ end
24
+
25
+ it "returns nil" do
26
+ response = subject.apply_template(account_id, template_id, domain_id)
27
+ expect(response).to be_a(Dnsimple::Response)
28
+ expect(response.data).to be_nil
29
+ end
30
+ end
31
+
32
+ end
@@ -45,7 +45,7 @@ describe Dnsimple::Client, ".templates" do
45
45
 
46
46
  response.data.each do |result|
47
47
  expect(result).to be_a(Dnsimple::Struct::TemplateRecord)
48
- expect(result.id).to be_a(Fixnum)
48
+ expect(result.id).to be_a(Integer)
49
49
  expect(result.type).to be_a(String)
50
50
  expect(result.name).to be_a(String)
51
51
  expect(result.content).to be_a(String)
@@ -182,11 +182,35 @@ describe Dnsimple::Client, ".templates" do
182
182
  with(headers: { "Accept" => "application/json" })
183
183
  end
184
184
 
185
- it "returns the list of templates" do
185
+ it "returns nil" do
186
186
  response = subject.delete_template(account_id, template_id)
187
187
  expect(response).to be_a(Dnsimple::Response)
188
188
  expect(response.data).to be_nil
189
189
  end
190
190
  end
191
191
 
192
+ describe "#apply_template" do
193
+ let(:account_id) { 1010 }
194
+ let(:template_id) { 5410 }
195
+ let(:domain_id) { 'example.com' }
196
+
197
+ before do
198
+ stub_request(:post, %r{/v2/#{account_id}/domains/#{domain_id}/templates/#{template_id}$}).
199
+ to_return(read_http_fixture("applyTemplate/success.http"))
200
+ end
201
+
202
+ it "builds the correct request" do
203
+ subject.apply_template(account_id, template_id, domain_id)
204
+
205
+ expect(WebMock).to have_requested(:post, "https://api.dnsimple.test/v2/#{account_id}/domains/#{domain_id}/templates/#{template_id}").
206
+ with(headers: { "Accept" => "application/json" })
207
+ end
208
+
209
+ it "returns nil" do
210
+ response = subject.apply_template(account_id, template_id, domain_id)
211
+ expect(response).to be_a(Dnsimple::Response)
212
+ expect(response.data).to be_nil
213
+ end
214
+ end
215
+
192
216
  end
@@ -43,7 +43,7 @@ describe Dnsimple::Client, ".tlds" do
43
43
 
44
44
  response.data.each do |result|
45
45
  expect(result).to be_a(Dnsimple::Struct::Tld)
46
- expect(result.tld_type).to be_a(Fixnum)
46
+ expect(result.tld_type).to be_a(Integer)
47
47
  expect(result.tld).to be_a(String)
48
48
  end
49
49
  end
@@ -53,9 +53,9 @@ describe Dnsimple::Client, ".tlds" do
53
53
 
54
54
  expect(response.respond_to?(:page)).to be_truthy
55
55
  expect(response.page).to eq(1)
56
- expect(response.per_page).to be_a(Fixnum)
57
- expect(response.total_entries).to be_a(Fixnum)
58
- expect(response.total_pages).to be_a(Fixnum)
56
+ expect(response.per_page).to be_a(Integer)
57
+ expect(response.total_entries).to be_a(Integer)
58
+ expect(response.total_pages).to be_a(Integer)
59
59
  end
60
60
  end
61
61
 
@@ -101,6 +101,10 @@ describe Dnsimple::Client, ".tlds" do
101
101
  expect(result.whois_privacy).to eq(true)
102
102
  expect(result.auto_renew_only).to eq(false)
103
103
  expect(result.idn).to eq(true)
104
+ expect(result.minimum_registration).to eq(1)
105
+ expect(result.registration_enabled).to eq(true)
106
+ expect(result.renewal_enabled).to eq(true)
107
+ expect(result.transfer_enabled).to eq(true)
104
108
  end
105
109
  end
106
110
 
@@ -0,0 +1,54 @@
1
+ require 'spec_helper'
2
+
3
+ describe Dnsimple::Client, ".vanity_name_servers" do
4
+
5
+ subject { described_class.new(base_url: "https://api.dnsimple.test", access_token: "a1b2c3").vanity_name_servers }
6
+
7
+ describe "#enable_vanity_name_servers" do
8
+ let(:account_id) { 1010 }
9
+
10
+ before do
11
+ stub_request(:put, %r{/v2/#{account_id}/vanity/.+$}).
12
+ to_return(read_http_fixture("enableVanityNameServers/success.http"))
13
+ end
14
+
15
+ it "builds the correct request" do
16
+ subject.enable_vanity_name_servers(account_id, domain_name = "example.com")
17
+
18
+ expect(WebMock).to have_requested(:put, "https://api.dnsimple.test/v2/#{account_id}/vanity/#{domain_name}").
19
+ with(headers: { "Accept" => "application/json" })
20
+ end
21
+
22
+ it "returns vanity name servers of the domain" do
23
+ response = subject.enable_vanity_name_servers(account_id, "example.com")
24
+ expect(response).to be_a(Dnsimple::Response)
25
+
26
+ vanity_name_servers = response.data.map { |ns| ns["name"] }
27
+ expect(vanity_name_servers).to match_array(%w(ns1.example.com ns2.example.com ns3.example.com ns4.example.com))
28
+ end
29
+ end
30
+
31
+ describe "#disable_vanity_name_servers" do
32
+ let(:account_id) { 1010 }
33
+
34
+ before do
35
+ stub_request(:delete, %r{/v2/#{account_id}/vanity/.+$}).
36
+ to_return(read_http_fixture("disableVanityNameServers/success.http"))
37
+ end
38
+
39
+ it "builds the correct request" do
40
+ subject.disable_vanity_name_servers(account_id, domain_name = "example.com")
41
+
42
+ expect(WebMock).to have_requested(:delete, "https://api.dnsimple.test/v2/#{account_id}/vanity/#{domain_name}").
43
+ with(headers: { "Accept" => "application/json" })
44
+ end
45
+
46
+ it "returns empty response" do
47
+ response = subject.disable_vanity_name_servers(account_id, "example.com")
48
+ expect(response).to be_a(Dnsimple::Response)
49
+
50
+ result = response.data
51
+ expect(result).to be_nil
52
+ end
53
+ end
54
+ end
@@ -40,7 +40,7 @@ describe Dnsimple::Client, ".webhooks" do
40
40
 
41
41
  response.data.each do |result|
42
42
  expect(result).to be_a(Dnsimple::Struct::Webhook)
43
- expect(result.id).to be_a(Fixnum)
43
+ expect(result.id).to be_a(Integer)
44
44
  end
45
45
  end
46
46
  end
@@ -69,7 +69,7 @@ describe Dnsimple::Client, ".webhooks" do
69
69
 
70
70
  result = response.data
71
71
  expect(result).to be_a(Dnsimple::Struct::Webhook)
72
- expect(result.id).to be_a(Fixnum)
72
+ expect(result.id).to be_a(Integer)
73
73
  end
74
74
  end
75
75
 
@@ -53,8 +53,9 @@ describe Dnsimple::Client, ".zones" do
53
53
  expect(response.data.size).to eq(5)
54
54
 
55
55
  response.data.each do |result|
56
- expect(result).to be_a(Dnsimple::Struct::Record)
57
- expect(result.id).to be_a(Fixnum)
56
+ expect(result).to be_a(Dnsimple::Struct::ZoneRecord)
57
+ expect(result.id).to be_a(Integer)
58
+ expect(result.regions).to be_a(Array)
58
59
  end
59
60
  end
60
61
 
@@ -63,9 +64,9 @@ describe Dnsimple::Client, ".zones" do
63
64
 
64
65
  expect(response.respond_to?(:page)).to be_truthy
65
66
  expect(response.page).to eq(1)
66
- expect(response.per_page).to be_a(Fixnum)
67
- expect(response.total_entries).to be_a(Fixnum)
68
- expect(response.total_pages).to be_a(Fixnum)
67
+ expect(response.per_page).to be_a(Integer)
68
+ expect(response.total_entries).to be_a(Integer)
69
+ expect(response.total_pages).to be_a(Integer)
69
70
  end
70
71
 
71
72
  context "when the zone does not exist" do
@@ -116,7 +117,7 @@ describe Dnsimple::Client, ".zones" do
116
117
  to_return(read_http_fixture("createZoneRecord/created.http"))
117
118
  end
118
119
 
119
- let(:attributes) { { type: "A", name: "www", content: "127.0.0.1" } }
120
+ let(:attributes) { { type: "MX", name: "", content: "mxa.example.com", regions: %w(SV1 IAD) } }
120
121
 
121
122
  it "builds the correct request" do
122
123
  subject.create_record(account_id, zone_id, attributes)
@@ -131,8 +132,12 @@ describe Dnsimple::Client, ".zones" do
131
132
  expect(response).to be_a(Dnsimple::Response)
132
133
 
133
134
  result = response.data
134
- expect(result).to be_a(Dnsimple::Struct::Record)
135
- expect(result.id).to eq(64784)
135
+ expect(result).to be_a(Dnsimple::Struct::ZoneRecord)
136
+ expect(result.id).to eq(5)
137
+ expect(result.type).to eq(attributes.fetch(:type))
138
+ expect(result.name).to eq(attributes.fetch(:name))
139
+ expect(result.content).to eq(attributes.fetch(:content))
140
+ expect(result.regions).to eq(attributes.fetch(:regions))
136
141
  end
137
142
 
138
143
  context "when the zone does not exist" do
@@ -150,6 +155,7 @@ describe Dnsimple::Client, ".zones" do
150
155
  describe "#record" do
151
156
  let(:account_id) { 1010 }
152
157
  let(:zone_id) { "example.com" }
158
+ let(:record_id) { 5 }
153
159
 
154
160
  before do
155
161
  stub_request(:get, %r{/v2/#{account_id}/zones/#{zone_id}/records/.+$}).
@@ -157,29 +163,30 @@ describe Dnsimple::Client, ".zones" do
157
163
  end
158
164
 
159
165
  it "builds the correct request" do
160
- subject.record(account_id, zone_id, record_id = 2)
166
+ subject.record(account_id, zone_id, record_id)
161
167
 
162
168
  expect(WebMock).to have_requested(:get, "https://api.dnsimple.test/v2/#{account_id}/zones/#{zone_id}/records/#{record_id}").
163
169
  with(headers: { 'Accept' => 'application/json' })
164
170
  end
165
171
 
166
172
  it "returns the record" do
167
- response = subject.record(account_id, zone_id, 2)
173
+ response = subject.record(account_id, zone_id, record_id)
168
174
  expect(response).to be_a(Dnsimple::Response)
169
175
 
170
176
  result = response.data
171
- expect(result).to be_a(Dnsimple::Struct::Record)
172
- expect(result.id).to eq(64784)
177
+ expect(result).to be_a(Dnsimple::Struct::ZoneRecord)
178
+ expect(result.id).to eq(record_id)
173
179
  expect(result.zone_id).to eq("example.com")
174
180
  expect(result.parent_id).to eq(nil)
175
- expect(result.type).to eq("A")
176
- expect(result.name).to eq("www")
177
- expect(result.content).to eq("127.0.0.1")
181
+ expect(result.type).to eq("MX")
182
+ expect(result.name).to eq("")
183
+ expect(result.content).to eq("mxa.example.com")
178
184
  expect(result.ttl).to eq(600)
179
- expect(result.priority).to eq(nil)
185
+ expect(result.priority).to eq(10)
180
186
  expect(result.system_record).to eq(false)
181
- expect(result.created_at).to eq("2016-01-07T17:45:13.653Z")
182
- expect(result.updated_at).to eq("2016-01-07T17:45:13.653Z")
187
+ expect(result.regions).to eq(%w(SV1 IAD))
188
+ expect(result.created_at).to eq("2016-10-05T09:51:35.313Z")
189
+ expect(result.updated_at).to eq("2016-10-05T09:51:35.313Z")
183
190
  end
184
191
 
185
192
  context "when the zone does not exist" do
@@ -208,16 +215,17 @@ describe Dnsimple::Client, ".zones" do
208
215
  describe "#update_record" do
209
216
  let(:account_id) { 1010 }
210
217
  let(:zone_id) { "example.com" }
218
+ let(:record_id) { 5 }
211
219
 
212
220
  before do
213
221
  stub_request(:patch, %r{/v2/#{account_id}/zones/#{zone_id}/records/.+$}).
214
222
  to_return(read_http_fixture("updateZoneRecord/success.http"))
215
223
  end
216
224
 
217
- let(:attributes) { { content: "127.0.0.1", priority: "1" } }
225
+ let(:attributes) { { content: "mxb.example.com", priority: "20", regions: ['global'] } }
218
226
 
219
227
  it "builds the correct request" do
220
- subject.update_record(account_id, zone_id, record_id = 2, attributes)
228
+ subject.update_record(account_id, zone_id, record_id, attributes)
221
229
 
222
230
  expect(WebMock).to have_requested(:patch, "https://api.dnsimple.test/v2/#{account_id}/zones/#{zone_id}/records/#{record_id}").
223
231
  with(body: attributes).
@@ -225,12 +233,15 @@ describe Dnsimple::Client, ".zones" do
225
233
  end
226
234
 
227
235
  it "returns the record" do
228
- response = subject.update_record(account_id, zone_id, 2, attributes)
236
+ response = subject.update_record(account_id, zone_id, record_id, attributes)
229
237
  expect(response).to be_a(Dnsimple::Response)
230
238
 
231
239
  result = response.data
232
- expect(result).to be_a(Dnsimple::Struct::Record)
233
- expect(result.id).to eq(64784)
240
+ expect(result).to be_a(Dnsimple::Struct::ZoneRecord)
241
+ expect(result.id).to eq(record_id)
242
+ expect(result.content).to eq(attributes.fetch(:content))
243
+ expect(result.priority).to eq(attributes.fetch(:priority).to_i)
244
+ expect(result.regions).to eq(attributes.fetch(:regions))
234
245
  end
235
246
 
236
247
  context "when the zone does not exist" do
@@ -53,7 +53,7 @@ describe Dnsimple::Client, ".zones" do
53
53
 
54
54
  response.data.each do |result|
55
55
  expect(result).to be_a(Dnsimple::Struct::Zone)
56
- expect(result.id).to be_a(Fixnum)
56
+ expect(result.id).to be_a(Integer)
57
57
  end
58
58
  end
59
59
 
@@ -62,9 +62,9 @@ describe Dnsimple::Client, ".zones" do
62
62
 
63
63
  expect(response.respond_to?(:page)).to be_truthy
64
64
  expect(response.page).to eq(1)
65
- expect(response.per_page).to be_a(Fixnum)
66
- expect(response.total_entries).to be_a(Fixnum)
67
- expect(response.total_pages).to be_a(Fixnum)
65
+ expect(response.per_page).to be_a(Integer)
66
+ expect(response.total_entries).to be_a(Integer)
67
+ expect(response.total_pages).to be_a(Integer)
68
68
  end
69
69
  end
70
70
 
@@ -135,4 +135,40 @@ describe Dnsimple::Client, ".zones" do
135
135
  end
136
136
  end
137
137
 
138
+ describe "#zone_file" do
139
+ let(:account_id) { 1010 }
140
+
141
+ before do
142
+ stub_request(:get, %r{/v2/#{account_id}/zones/.+$}).
143
+ to_return(read_http_fixture("getZoneFile/success.http"))
144
+ end
145
+
146
+ it "builds the correct request" do
147
+ subject.zone_file(account_id, zone = "example.com")
148
+
149
+ expect(WebMock).to have_requested(:get, "https://api.dnsimple.test/v2/#{account_id}/zones/#{zone}/file").
150
+ with(headers: { 'Accept' => 'application/json' })
151
+ end
152
+
153
+ it "returns the zone id" do
154
+ response = subject.zone_file(account_id, "example.com")
155
+ expect(response).to be_a(Dnsimple::Response)
156
+
157
+ result = response.data
158
+ expect(result).to be_a(Dnsimple::Struct::ZoneFile)
159
+ expect(result.zone).to eq("$ORIGIN example.com.\n$TTL 1h\nexample.com. 3600 IN SOA ns1.dnsimple.com. admin.dnsimple.com. 1453132552 86400 7200 604800 300\nexample.com. 3600 IN NS ns1.dnsimple.com.\nexample.com. 3600 IN NS ns2.dnsimple.com.\nexample.com. 3600 IN NS ns3.dnsimple.com.\nexample.com. 3600 IN NS ns4.dnsimple.com.\n")
160
+ end
161
+
162
+ context "when the zone file does not exist" do
163
+ it "raises NotFoundError" do
164
+ stub_request(:get, %r{/v2}).
165
+ to_return(read_http_fixture("notfound-zone.http"))
166
+
167
+ expect {
168
+ subject.zone_file(account_id, "example.com")
169
+ }.to raise_error(Dnsimple::NotFoundError)
170
+ end
171
+ end
172
+ end
173
+
138
174
  end
@@ -0,0 +1,17 @@
1
+ HTTP/1.1 204 No Content
2
+ Server: nginx
3
+ Date: Thu, 11 Aug 2016 10:23:46 GMT
4
+ Connection: keep-alive
5
+ X-RateLimit-Limit: 2400
6
+ X-RateLimit-Remaining: 2392
7
+ X-RateLimit-Reset: 1470913058
8
+ Cache-Control: no-cache
9
+ X-Request-Id: 5867ab50-6237-4cf8-b220-51f5ef57debd
10
+ X-Runtime: 0.582482
11
+ X-Content-Type-Options: nosniff
12
+ X-Download-Options: noopen
13
+ X-Frame-Options: DENY
14
+ X-Permitted-Cross-Domain-Policies: none
15
+ X-XSS-Protection: 1; mode=block
16
+ Strict-Transport-Security: max-age=31536000
17
+
@@ -0,0 +1,21 @@
1
+ HTTP/1.1 201 Created
2
+ Server: nginx
3
+ Date: Fri, 07 Oct 2016 08:51:12 GMT
4
+ Content-Type: application/json; charset=utf-8
5
+ Transfer-Encoding: chunked
6
+ Connection: keep-alive
7
+ X-RateLimit-Limit: 2400
8
+ X-RateLimit-Remaining: 2398
9
+ X-RateLimit-Reset: 1475833772
10
+ ETag: W/"3e59e2eafbf1d4b626413a5703309b57"
11
+ Cache-Control: max-age=0, private, must-revalidate
12
+ X-Request-Id: 9f27e164-2448-4d23-ad67-4ecedaec063e
13
+ X-Runtime: 0.387144
14
+ X-Content-Type-Options: nosniff
15
+ X-Download-Options: noopen
16
+ X-Frame-Options: DENY
17
+ X-Permitted-Cross-Domain-Policies: none
18
+ X-XSS-Protection: 1; mode=block
19
+ Strict-Transport-Security: max-age=31536000
20
+
21
+ {"data":{"id":101,"domain_id":1,"domain_name":"example.com","user_id":null,"user_email":"invited-user@example.com","invitation":true,"created_at":"2016-10-07T08:51:12.630Z","updated_at":"2016-10-07T08:51:12.630Z","accepted_at":null}}
@@ -0,0 +1,21 @@
1
+ HTTP/1.1 201 Created
2
+ Server: nginx
3
+ Date: Fri, 07 Oct 2016 08:53:41 GMT
4
+ Content-Type: application/json; charset=utf-8
5
+ Transfer-Encoding: chunked
6
+ Connection: keep-alive
7
+ X-RateLimit-Limit: 2400
8
+ X-RateLimit-Remaining: 2397
9
+ X-RateLimit-Reset: 1475833772
10
+ ETag: W/"d35fa3da40b4f6586503174563d71bfc"
11
+ Cache-Control: max-age=0, private, must-revalidate
12
+ X-Request-Id: 42de3144-37c7-4329-88c4-fdc103cb150f
13
+ X-Runtime: 0.156436
14
+ X-Content-Type-Options: nosniff
15
+ X-Download-Options: noopen
16
+ X-Frame-Options: DENY
17
+ X-Permitted-Cross-Domain-Policies: none
18
+ X-XSS-Protection: 1; mode=block
19
+ Strict-Transport-Security: max-age=31536000
20
+
21
+ {"data":{"id":100,"domain_id":1,"domain_name":"example.com","user_id":999,"user_email":"existing-user@example.com","invitation":false,"created_at":"2016-10-07T08:53:41.643Z","updated_at":"2016-10-07T08:53:41.643Z","accepted_at":"2016-10-07T08:53:41.643Z"}}