dnsimple 10.0.0 → 11.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.
Files changed (104) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +5 -7
  3. data/.github/workflows/ci.yml +3 -3
  4. data/.github/workflows/release.yml +2 -2
  5. data/.github/workflows/sync-test-fixtures.yml +55 -0
  6. data/.markdownlint.yaml +15 -1
  7. data/.rubocop.yml +1 -1
  8. data/.rubocop_dnsimple.yml +15 -31
  9. data/CHANGELOG.md +9 -0
  10. data/Gemfile +7 -7
  11. data/lib/dnsimple/client/clients.rb +29 -31
  12. data/lib/dnsimple/client/domains_email_forwards.rb +1 -1
  13. data/lib/dnsimple/client/zones_records.rb +33 -0
  14. data/lib/dnsimple/client.rb +5 -5
  15. data/lib/dnsimple/default.rb +7 -7
  16. data/lib/dnsimple/response.rb +3 -3
  17. data/lib/dnsimple/struct/charge.rb +1 -1
  18. data/lib/dnsimple/struct/email_forward.rb +0 -8
  19. data/lib/dnsimple/struct/zone_record_id.rb +12 -0
  20. data/lib/dnsimple/struct/zone_records_batch_change.rb +18 -0
  21. data/lib/dnsimple/struct.rb +42 -40
  22. data/lib/dnsimple/version.rb +1 -1
  23. data/lib/dnsimple.rb +5 -5
  24. data/spec/dnsimple/client/accounts_spec.rb +2 -2
  25. data/spec/dnsimple/client/billing_spec.rb +3 -3
  26. data/spec/dnsimple/client/certificates_spec.rb +11 -11
  27. data/spec/dnsimple/client/client_service_spec.rb +1 -1
  28. data/spec/dnsimple/client/contacts_spec.rb +6 -6
  29. data/spec/dnsimple/client/dns_analytics_spec.rb +9 -9
  30. data/spec/dnsimple/client/domains_delegation_signer_records_spec.rb +7 -7
  31. data/spec/dnsimple/client/domains_dnssec_spec.rb +4 -4
  32. data/spec/dnsimple/client/domains_email_forwards_spec.rb +8 -15
  33. data/spec/dnsimple/client/domains_pushes_spec.rb +5 -5
  34. data/spec/dnsimple/client/domains_spec.rb +6 -6
  35. data/spec/dnsimple/client/identity_spec.rb +2 -2
  36. data/spec/dnsimple/client/oauth_spec.rb +3 -3
  37. data/spec/dnsimple/client/registrar_auto_renewal_spec.rb +3 -3
  38. data/spec/dnsimple/client/registrar_delegation_spec.rb +1 -1
  39. data/spec/dnsimple/client/registrar_spec.rb +1 -1
  40. data/spec/dnsimple/client/registrar_transfer_lock_spec.rb +4 -4
  41. data/spec/dnsimple/client/registrar_whois_privacy_spec.rb +1 -1
  42. data/spec/dnsimple/client/services_domains_spec.rb +4 -4
  43. data/spec/dnsimple/client/services_spec.rb +1 -1
  44. data/spec/dnsimple/client/templates_domains_spec.rb +2 -2
  45. data/spec/dnsimple/client/templates_records_spec.rb +4 -4
  46. data/spec/dnsimple/client/templates_spec.rb +2 -2
  47. data/spec/dnsimple/client/tlds_spec.rb +5 -5
  48. data/spec/dnsimple/client/vanity_name_servers_spec.rb +1 -1
  49. data/spec/dnsimple/client/webhooks_spec.rb +5 -5
  50. data/spec/dnsimple/client/zones_distributions_spec.rb +3 -3
  51. data/spec/dnsimple/client/zones_records_spec.rb +102 -7
  52. data/spec/dnsimple/client/zones_spec.rb +6 -6
  53. data/spec/dnsimple/client_spec.rb +10 -10
  54. data/spec/dnsimple/extra_spec.rb +1 -1
  55. data/spec/dnsimple/options/base_spec.rb +5 -5
  56. data/spec/dnsimple/options/list_options_spec.rb +21 -21
  57. data/spec/fixtures.http/accounts/success-user.http +2 -1
  58. data/spec/fixtures.http/batchChangeZoneRecords/error_400_create_validation_failed.http +16 -0
  59. data/spec/fixtures.http/batchChangeZoneRecords/error_400_delete_validation_failed.http +15 -0
  60. data/spec/fixtures.http/batchChangeZoneRecords/error_400_update_validation_failed.http +15 -0
  61. data/spec/fixtures.http/batchChangeZoneRecords/success.http +16 -0
  62. data/spec/fixtures.http/checkRegistrantChange/error-contactnotfound.http +4 -4
  63. data/spec/fixtures.http/checkRegistrantChange/error-domainnotfound.http +4 -4
  64. data/spec/fixtures.http/checkRegistrantChange/success.http +5 -5
  65. data/spec/fixtures.http/createContact/error-validation-errors.http +18 -0
  66. data/spec/fixtures.http/createEmailForward/created.http +1 -2
  67. data/spec/fixtures.http/createRegistrantChange/success.http +5 -5
  68. data/spec/fixtures.http/createWebhook/created.http +16 -16
  69. data/spec/fixtures.http/deleteRegistrantChange/success.http +4 -4
  70. data/spec/fixtures.http/deleteRegistrantChange/success_async.http +14 -0
  71. data/spec/fixtures.http/dnsAnalytics/success.http +1 -1
  72. data/spec/fixtures.http/getDomainPrices/failure.http +18 -18
  73. data/spec/fixtures.http/getDomainPrices/success.http +21 -21
  74. data/spec/fixtures.http/getDomainRestore/success.http +15 -13
  75. data/spec/fixtures.http/getEmailForward/success.http +1 -2
  76. data/spec/fixtures.http/getRegistrantChange/success.http +5 -5
  77. data/spec/fixtures.http/getTld/success.http +1 -1
  78. data/spec/fixtures.http/getWebhook/success.http +16 -16
  79. data/spec/fixtures.http/listAccounts/success-user.http +1 -1
  80. data/spec/fixtures.http/listCharges/fail-400-bad-filter.http +0 -2
  81. data/spec/fixtures.http/listCharges/fail-403.http +0 -2
  82. data/spec/fixtures.http/listCharges/success.http +0 -2
  83. data/spec/fixtures.http/listEmailForwards/success.http +1 -1
  84. data/spec/fixtures.http/listRegistrantChanges/success.http +5 -5
  85. data/spec/fixtures.http/listTlds/success.http +1 -1
  86. data/spec/fixtures.http/listWebhooks/success.http +16 -16
  87. data/spec/fixtures.http/registerDomain/error-extended-attributes.http +18 -0
  88. data/spec/fixtures.http/restoreDomain/success.http +14 -12
  89. data/spec/fixtures.http/updateZoneNsRecords/success.http +16 -0
  90. data/spec/fixtures.http/whoami/success-account.http +1 -1
  91. data/spec/fixtures.http/whoami/success.http +1 -1
  92. data/spec/spec_helper.rb +4 -4
  93. data/spec/support/webmock.rb +1 -1
  94. metadata +14 -12
  95. data/.github/CODEOWNERS +0 -1
  96. data/.github/workflows/auto-merge.yml +0 -32
  97. data/lib/dnsimple/client/domains_collaborators.rb +0 -87
  98. data/spec/dnsimple/client/domains_collaborators_spec.rb +0 -164
  99. data/spec/fixtures.http/addCollaborator/invite-success.http +0 -20
  100. data/spec/fixtures.http/addCollaborator/success.http +0 -20
  101. data/spec/fixtures.http/listCollaborators/success.http +0 -20
  102. data/spec/fixtures.http/notfound-collaborator.http +0 -15
  103. data/spec/fixtures.http/removeCollaborator/success.http +0 -17
  104. /data/spec/fixtures.http/{notfound-delegationsignerrecord.http → notfound-delegationSignerRecord.http} +0 -0
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  describe Dnsimple::Client do
6
6
 
@@ -135,11 +135,11 @@ describe Dnsimple::Client do
135
135
  it "performs a request" do
136
136
  stub_request(:get, %r{/foo})
137
137
 
138
- subject.request(:get, 'foo', {})
138
+ subject.request(:get, "foo", {})
139
139
 
140
140
  expect(WebMock).to have_requested(:get, "https://api.dnsimple.com/foo")
141
141
  .with(basic_auth: %w[user pass],
142
- headers: { 'Accept' => 'application/json', 'User-Agent' => Dnsimple::Default::USER_AGENT })
142
+ headers: { "Accept" => "application/json", "User-Agent" => Dnsimple::Default::USER_AGENT })
143
143
  end
144
144
 
145
145
  it "delegates to HTTParty" do
@@ -150,11 +150,11 @@ describe Dnsimple::Client do
150
150
  "#{subject.base_url}foo", {
151
151
  format: :json,
152
152
  basic_auth: { username: "user", password: "pass" },
153
- headers: { 'Accept' => 'application/json', 'User-Agent' => Dnsimple::Default::USER_AGENT },
153
+ headers: { "Accept" => "application/json", "User-Agent" => Dnsimple::Default::USER_AGENT },
154
154
  }
155
155
  )
156
156
 
157
- subject.request(:get, 'foo')
157
+ subject.request(:get, "foo")
158
158
  end
159
159
 
160
160
  it "properly extracts processes options and encodes data" do
@@ -165,12 +165,12 @@ describe Dnsimple::Client do
165
165
  body: JSON.dump(something: "else"),
166
166
  query: { foo: "bar" },
167
167
  basic_auth: { username: "user", password: "pass" },
168
- headers: { 'Accept' => 'application/json', 'Content-Type' => 'application/json', 'User-Agent' => Dnsimple::Default::USER_AGENT, "Custom" => "Header" },
168
+ headers: { "Accept" => "application/json", "Content-Type" => "application/json", "User-Agent" => Dnsimple::Default::USER_AGENT, "Custom" => "Header" },
169
169
  }
170
170
  )
171
171
 
172
172
  expect {
173
- subject.request(:put, 'foo', { something: "else" }, { query: { foo: "bar" }, headers: { "Custom" => "Header" } })
173
+ subject.request(:put, "foo", { something: "else" }, { query: { foo: "bar" }, headers: { "Custom" => "Header" } })
174
174
  }.not_to raise_error
175
175
  end
176
176
 
@@ -181,12 +181,12 @@ describe Dnsimple::Client do
181
181
  format: :json,
182
182
  body: { something: "else" },
183
183
  basic_auth: { username: "user", password: "pass" },
184
- headers: { 'Accept' => 'application/json', 'Content-Type' => 'application/x-www-form-urlencoded', 'User-Agent' => Dnsimple::Default::USER_AGENT },
184
+ headers: { "Accept" => "application/json", "Content-Type" => "application/x-www-form-urlencoded", "User-Agent" => Dnsimple::Default::USER_AGENT },
185
185
  }
186
186
  )
187
187
 
188
188
  expect {
189
- subject.request(:post, 'foo', { something: "else" }, { headers: { "Content-Type" => "application/x-www-form-urlencoded" } })
189
+ subject.request(:post, "foo", { something: "else" }, { headers: { "Content-Type" => "application/x-www-form-urlencoded" } })
190
190
  }.not_to raise_error
191
191
  end
192
192
 
@@ -197,7 +197,7 @@ describe Dnsimple::Client do
197
197
  format: :json,
198
198
  http_proxyaddr: "example-proxy.com",
199
199
  http_proxyport: "4321",
200
- headers: { 'Accept' => 'application/json', 'User-Agent' => Dnsimple::Default::USER_AGENT },
200
+ headers: { "Accept" => "application/json", "User-Agent" => Dnsimple::Default::USER_AGENT },
201
201
  }
202
202
  )
203
203
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  describe Dnsimple::Extra do
6
6
 
@@ -1,19 +1,19 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  RSpec.describe Dnsimple::Options::Base do
6
- describe '#initialize' do
7
- it 'accepts a hash' do
6
+ describe "#initialize" do
7
+ it "accepts a hash" do
8
8
  hash = { a: 1 }
9
9
  expect(described_class.new(hash).to_h).to eq(hash)
10
10
  end
11
11
 
12
- it 'accepts nil' do
12
+ it "accepts nil" do
13
13
  expect(described_class.new(nil).to_h).to eq({})
14
14
  end
15
15
 
16
- it 'duplicates given hash' do
16
+ it "duplicates given hash" do
17
17
  hash = { a: [1] }
18
18
  base = described_class.new(hash)
19
19
  base.to_h[:a] << 2
@@ -1,29 +1,29 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'spec_helper'
3
+ require "spec_helper"
4
4
 
5
5
  RSpec.describe Dnsimple::Options::ListOptions do
6
- describe '#to_h' do
7
- it 'returns empty hash if given options equal to nil' do
6
+ describe "#to_h" do
7
+ it "returns empty hash if given options equal to nil" do
8
8
  options = described_class.new(nil)
9
9
  expect(options.to_h).to eq({})
10
10
  end
11
11
 
12
- it 'returns empty hash if given options are empty' do
12
+ it "returns empty hash if given options are empty" do
13
13
  options = described_class.new({})
14
14
  expect(options.to_h).to eq({})
15
15
  end
16
16
 
17
- describe 'query' do
17
+ describe "query" do
18
18
  it 'adds "query" key if given options are filled' do
19
19
  options = described_class.new(a: 1)
20
20
  expect(options.to_h).to have_key(:query)
21
21
  end
22
22
  end
23
23
 
24
- describe 'pagination' do
24
+ describe "pagination" do
25
25
  it 'adds "page" to "query"' do
26
- raw = { page: '23' }
26
+ raw = { page: "23" }
27
27
  expected = { query: raw }
28
28
  options = described_class.new(raw)
29
29
 
@@ -31,7 +31,7 @@ RSpec.describe Dnsimple::Options::ListOptions do
31
31
  end
32
32
 
33
33
  it 'adds "per_page" to "query"' do
34
- raw = { per_page: '500' }
34
+ raw = { per_page: "500" }
35
35
  expected = { query: raw }
36
36
  options = described_class.new(raw)
37
37
 
@@ -39,7 +39,7 @@ RSpec.describe Dnsimple::Options::ListOptions do
39
39
  end
40
40
 
41
41
  it 'combines "page" and "per_page"' do
42
- raw = { page: '1', per_page: '100' }
42
+ raw = { page: "1", per_page: "100" }
43
43
  expected = { query: raw }
44
44
  options = described_class.new(raw)
45
45
 
@@ -47,25 +47,25 @@ RSpec.describe Dnsimple::Options::ListOptions do
47
47
  end
48
48
  end
49
49
 
50
- describe 'sorting' do
50
+ describe "sorting" do
51
51
  it 'adds sorting policy to "query"' do
52
- raw = { sort: 'name:desc' }
52
+ raw = { sort: "name:desc" }
53
53
  expected = { query: raw }
54
54
  options = described_class.new(raw)
55
55
 
56
56
  expect(options.to_h).to eq(expected)
57
57
  end
58
58
 
59
- it 'combines with filtering' do
60
- raw = { sort: 'name:desc', filter: { name: 'foo' } }
59
+ it "combines with filtering" do
60
+ raw = { sort: "name:desc", filter: { name: "foo" } }
61
61
  expected = { query: { sort: raw.fetch(:sort) }.merge(raw.fetch(:filter)) }
62
62
  options = described_class.new(raw)
63
63
 
64
64
  expect(options.to_h).to eq(expected)
65
65
  end
66
66
 
67
- it 'combines with pagination' do
68
- raw = { sort: 'name:desc', page: '2', per_page: '100' }
67
+ it "combines with pagination" do
68
+ raw = { sort: "name:desc", page: "2", per_page: "100" }
69
69
  expected = { query: raw }
70
70
  options = described_class.new(raw)
71
71
 
@@ -73,25 +73,25 @@ RSpec.describe Dnsimple::Options::ListOptions do
73
73
  end
74
74
  end
75
75
 
76
- describe 'filtering' do
76
+ describe "filtering" do
77
77
  it 'adds filtering policy to "query"' do
78
- raw = { filter: { name_like: 'example' } }
78
+ raw = { filter: { name_like: "example" } }
79
79
  expected = { query: raw.fetch(:filter) }
80
80
  options = described_class.new(raw)
81
81
 
82
82
  expect(options.to_h).to eq(expected)
83
83
  end
84
84
 
85
- it 'combines with sorting' do
86
- raw = { filter: { name_like: 'bar' }, sort: 'tld:desc' }
85
+ it "combines with sorting" do
86
+ raw = { filter: { name_like: "bar" }, sort: "tld:desc" }
87
87
  expected = { query: raw.fetch(:filter).merge(sort: raw.fetch(:sort)) }
88
88
  options = described_class.new(raw)
89
89
 
90
90
  expect(options.to_h).to eq(expected)
91
91
  end
92
92
 
93
- it 'combines with pagination' do
94
- raw = { filter: { name_like: 'example' }, page: '1', per_page: '20' }
93
+ it "combines with pagination" do
94
+ raw = { filter: { name_like: "example" }, page: "1", per_page: "20" }
95
95
  expected = { query: { page: raw.fetch(:page), per_page: raw.fetch(:per_page) }.merge(raw.fetch(:filter)) }
96
96
  options = described_class.new(raw)
97
97
 
@@ -17,4 +17,5 @@ X-Permitted-Cross-Domain-Policies: none
17
17
  X-XSS-Protection: 1; mode=block
18
18
  Strict-Transport-Security: max-age=31536000
19
19
 
20
- {"data":[{"id":123,"email":"john@example.com","plan_identifier":"dnsimple-personal","created_at":"2011-09-11T17:15:58Z","updated_at":"2016-06-03T15:02:26Z"},{"id":456,"email":"ops@company.com","plan_identifier":"dnsimple-professional","created_at":"2012-03-16T16:02:54Z","updated_at":"2016-06-14T11:23:16Z"}]}
20
+ {"data":[{"id":123,"email":"john@example.com","plan_identifier":"dnsimple-personal","created_at":"2011-09-11T17:15:58Z","updated_at":"2016-06-03T15:02:26Z"},{"id":456,"email":"ops@company.com","plan_identifier":"teams-v1-monthly","created_at":"2012-03-16T16:02:54Z","updated_at":"2016-06-14T11:23:16Z"}]}
21
+
@@ -0,0 +1,16 @@
1
+ HTTP/1.1 400 Bad Request
2
+ Server: nginx
3
+ Date: Tue, 23 Sep 2025 10:21:06 GMT
4
+ Content-Type: application/json; charset=utf-8
5
+ Content-Length: 137
6
+ Connection: keep-alive
7
+ X-RateLimit-Limit: 2400
8
+ X-RateLimit-Remaining: 2397
9
+ X-RateLimit-Reset: 1758626142
10
+ X-WORK-WITH-US: Love automation? So do we! https://dnsimple.com/jobs
11
+ Cache-Control: no-cache
12
+ X-Request-Id: 22761da9-ad02-4970-add5-e26602b09bb5
13
+ X-Runtime: 0.115194
14
+ Strict-Transport-Security: max-age=63072000
15
+
16
+ {"message":"Validation failed","errors":{"creates":[{"index":0,"message":"Validation failed","errors":{"record_type":["unsupported"]}}]}}
@@ -0,0 +1,15 @@
1
+ HTTP/1.1 400 Bad Request
2
+ server: nginx
3
+ date: Fri, 05 Sep 2025 06:50:48 GMT
4
+ content-type: application/json; charset=utf-8
5
+ content-length: 107
6
+ X-RateLimit-Limit: 2400
7
+ X-RateLimit-Remaining: 2390
8
+ X-RateLimit-Reset: 1757058040
9
+ x-work-with-us: Love automation? So do we! https://dnsimple.com/jobs
10
+ cache-control: no-cache
11
+ x-request-id: 254988cd-401b-4a32-b5d8-c25502573c9a
12
+ x-runtime: 0.105704
13
+ strict-transport-security: max-age=63072000
14
+
15
+ {"message":"Validation failed","errors":{"deletes":[{"index":0,"message":"Record not found ID=67622509"}]}}
@@ -0,0 +1,15 @@
1
+ HTTP/1.1 400 Bad Request
2
+ server: nginx
3
+ date: Fri, 05 Sep 2025 06:52:30 GMT
4
+ content-type: application/json; charset=utf-8
5
+ content-length: 107
6
+ X-RateLimit-Limit: 2400
7
+ X-RateLimit-Remaining: 2388
8
+ X-RateLimit-Reset: 1757058040
9
+ x-work-with-us: Love automation? So do we! https://dnsimple.com/jobs
10
+ cache-control: no-cache
11
+ x-request-id: e042a192-69de-46b5-9ea0-add647a9b20a
12
+ x-runtime: 0.170298
13
+ strict-transport-security: max-age=63072000
14
+
15
+ {"message":"Validation failed","errors":{"updates":[{"index":0,"message":"Record not found ID=99999999"}]}}
@@ -0,0 +1,16 @@
1
+ HTTP/1.1 200 OK
2
+ server: nginx
3
+ date: Fri, 05 Sep 2025 05:25:01 GMT
4
+ content-type: application/json; charset=utf-8
5
+ content-length: 1080
6
+ X-RateLimit-Limit: 2400
7
+ X-RateLimit-Remaining: 2399
8
+ X-RateLimit-Reset: 1757053501
9
+ x-work-with-us: Love automation? So do we! https://dnsimple.com/jobs
10
+ etag: W/"0d9f98e87eccabb6c8045c7fd0b61e5e"
11
+ cache-control: max-age=0, private, must-revalidate
12
+ x-request-id: f331c43b-7f06-4b1f-90a1-e88efee10c1c
13
+ x-runtime: 0.334890
14
+ strict-transport-security: max-age=63072000
15
+
16
+ {"data":{"creates":[{"id":67623409,"zone_id":"example.com","parent_id":null,"name":"ab","content":"3.2.3.4","ttl":3600,"priority":null,"type":"A","regions":["global"],"system_record":false,"created_at":"2025-09-05T05:25:00Z","updated_at":"2025-09-05T05:25:00Z"},{"id":67623410,"zone_id":"example.com","parent_id":null,"name":"ab","content":"4.2.3.4","ttl":3600,"priority":null,"type":"A","regions":["global"],"system_record":false,"created_at":"2025-09-05T05:25:00Z","updated_at":"2025-09-05T05:25:00Z"}],"updates":[{"id":67622534,"zone_id":"example.com","parent_id":null,"name":"update1-1757049890","content":"3.2.3.40","ttl":3600,"priority":null,"type":"A","regions":["global"],"system_record":false,"created_at":"2025-09-05T04:40:15Z","updated_at":"2025-09-05T05:25:00Z"},{"id":67622537,"zone_id":"example.com","parent_id":null,"name":"update2-1757049890","content":"5.2.3.40","ttl":3600,"priority":null,"type":"A","regions":["global"],"system_record":false,"created_at":"2025-09-05T04:40:22Z","updated_at":"2025-09-05T05:25:00Z"}],"deletes":[{"id":67622509},{"id":67622527}]}}
@@ -2,13 +2,13 @@ HTTP/1.1 404
2
2
  server: nginx
3
3
  date: Tue, 22 Aug 2023 13:59:02 GMT
4
4
  content-type: application/json; charset=utf-8
5
- x-ratelimit-limit: 2400
6
- x-ratelimit-remaining: 2398
7
- x-ratelimit-reset: 1692716201
5
+ X-RateLimit-Limit: 2400
6
+ X-RateLimit-Remaining: 2398
7
+ X-RateLimit-Reset: 1692716201
8
8
  x-work-with-us: Love automation? So do we! https://dnsimple.com/jobs
9
9
  cache-control: no-cache
10
10
  x-request-id: b1dd3f42-ebb9-42fd-a121-d595de96f667
11
11
  x-runtime: 0.019122
12
12
  strict-transport-security: max-age=63072000
13
13
 
14
- {"message":"Contact `21` not found"}
14
+ {"message":"Contact `21` not found"}
@@ -2,9 +2,9 @@ HTTP/1.1 404
2
2
  server: nginx
3
3
  date: Tue, 22 Aug 2023 11:09:40 GMT
4
4
  content-type: application/json; charset=utf-8
5
- x-ratelimit-limit: 2400
6
- x-ratelimit-remaining: 2395
7
- x-ratelimit-reset: 1692705338
5
+ X-RateLimit-Limit: 2400
6
+ X-RateLimit-Remaining: 2395
7
+ X-RateLimit-Reset: 1692705338
8
8
  x-work-with-us: Love automation? So do we! https://dnsimple.com/jobs
9
9
  etag: W/"cef1e7d85d0b9bfd25e81b812891d34f"
10
10
  cache-control: max-age=0, private, must-revalidate
@@ -12,4 +12,4 @@ x-request-id: 5b0d8bfb-7b6a-40b5-a079-b640fd817e34
12
12
  x-runtime: 3.066249
13
13
  strict-transport-security: max-age=63072000
14
14
 
15
- {"message":"Domain `example.com` not found"}
15
+ {"message":"Domain `dnsimple-rraform.bio` not found"}
@@ -1,10 +1,10 @@
1
- HTTP/1.1 200
1
+ HTTP/1.1 200
2
2
  server: nginx
3
3
  date: Tue, 22 Aug 2023 11:09:40 GMT
4
4
  content-type: application/json; charset=utf-8
5
- x-ratelimit-limit: 2400
6
- x-ratelimit-remaining: 2395
7
- x-ratelimit-reset: 1692705338
5
+ X-RateLimit-Limit: 2400
6
+ X-RateLimit-Remaining: 2395
7
+ X-RateLimit-Reset: 1692705338
8
8
  x-work-with-us: Love automation? So do we! https://dnsimple.com/jobs
9
9
  etag: W/"cef1e7d85d0b9bfd25e81b812891d34f"
10
10
  cache-control: max-age=0, private, must-revalidate
@@ -12,4 +12,4 @@ x-request-id: 5b0d8bfb-7b6a-40b5-a079-b640fd817e34
12
12
  x-runtime: 3.066249
13
13
  strict-transport-security: max-age=63072000
14
14
 
15
- {"data":{"domain_id":101,"contact_id":101,"extended_attributes":[],"registry_owner_change":true}}
15
+ {"data":{"domain_id":101,"contact_id":101,"extended_attributes":[],"registry_owner_change":true}}
@@ -0,0 +1,18 @@
1
+ HTTP/1.1 400 Bad Request
2
+ Server: nginx
3
+ Date: Wed, 23 Nov 2016 08:12:57 GMT
4
+ Content-Type: application/json; charset=utf-8
5
+ Connection: keep-alive
6
+ X-RateLimit-Limit: 2400
7
+ X-RateLimit-Remaining: 2396
8
+ X-RateLimit-Reset: 1479892333
9
+ Cache-Control: no-cache
10
+ X-Request-Id: 91dcf81b-5df4-4d45-b37e-446f0c422a27
11
+ X-Runtime: 0.062556
12
+ X-Content-Type-Options: nosniff
13
+ X-Download-Options: noopen
14
+ X-Frame-Options: DENY
15
+ X-Permitted-Cross-Domain-Policies: none
16
+ X-XSS-Protection: 1; mode=block
17
+
18
+ {"message":"Validation failed","errors":{"address1":["can't be blank"],"city":["can't be blank"],"country":["can't be blank"],"email":["can't be blank","is an invalid email address"],"first_name":["can't be blank"],"last_name":["can't be blank"],"phone":["can't be blank","is probably not a phone number"],"postal_code":["can't be blank"],"state_province":["can't be blank"]}}
@@ -2,7 +2,6 @@ HTTP/1.1 201 Created
2
2
  Server: nginx
3
3
  Date: Mon, 25 Jan 2021 13:54:40 GMT
4
4
  Content-Type: application/json; charset=utf-8
5
- Transfer-Encoding: identity
6
5
  Connection: keep-alive
7
6
  X-RateLimit-Limit: 4800
8
7
  X-RateLimit-Remaining: 4772
@@ -19,4 +18,4 @@ X-Permitted-Cross-Domain-Policies: none
19
18
  Content-Security-Policy: frame-ancestors 'none'
20
19
  Strict-Transport-Security: max-age=31536000
21
20
 
22
- {"data":{"id":41872,"domain_id":235146,"alias_email":"example@dnsimple.xyz","destination_email":"example@example.com","created_at":"2021-01-25T13:54:40Z","updated_at":"2021-01-25T13:54:40Z","from":"example@dnsimple.xyz","to":"example@example.com"}}
21
+ {"data":{"id":41872,"domain_id":235146,"alias_email":"example@dnsimple.xyz","destination_email":"example@example.com","created_at":"2021-01-25T13:54:40Z","updated_at":"2021-01-25T13:54:40Z","from":"example@dnsimple.xyz","to":"example@example.com","active":true}}
@@ -1,14 +1,14 @@
1
- HTTP/1.1 202
1
+ HTTP/1.1 202
2
2
  server: nginx
3
3
  date: Tue, 22 Aug 2023 11:11:00 GMT
4
4
  content-type: application/json; charset=utf-8
5
- x-ratelimit-limit: 2400
6
- x-ratelimit-remaining: 2394
7
- x-ratelimit-reset: 1692705339
5
+ X-RateLimit-Limit: 2400
6
+ X-RateLimit-Remaining: 2394
7
+ X-RateLimit-Reset: 1692705339
8
8
  x-work-with-us: Love automation? So do we! https://dnsimple.com/jobs
9
9
  cache-control: no-cache
10
10
  x-request-id: 26bf7ff9-2075-42b0-9431-1778c825b6b0
11
11
  x-runtime: 3.408950
12
12
  strict-transport-security: max-age=63072000
13
13
 
14
- {"data":{"id":101,"account_id":101,"domain_id":101,"contact_id":101,"state":"new","extended_attributes":{},"registry_owner_change":true,"irt_lock_lifted_by":null,"created_at":"2017-02-03T17:43:22Z","updated_at":"2017-02-03T17:43:22Z"}}
14
+ {"data":{"id":101,"account_id":101,"domain_id":101,"contact_id":101,"state":"new","extended_attributes":{},"registry_owner_change":true,"irt_lock_lifted_by":null,"created_at":"2017-02-03T17:43:22Z","updated_at":"2017-02-03T17:43:22Z"}}
@@ -1,16 +1,16 @@
1
- HTTP/1.1 201 Created
2
- Server: nginx
3
- Date: Mon, 15 Feb 2016 17:04:38 GMT
4
- Content-Type: application/json; charset=utf-8
5
- Connection: keep-alive
6
- Status: 201 Created
7
- X-RateLimit-Limit: 4000
8
- X-RateLimit-Remaining: 3996
9
- X-RateLimit-Reset: 1455559348
10
- ETag: W/"a4b43ee926d18d0839f1eae08e78c66b"
11
- Cache-Control: max-age=0, private, must-revalidate
12
- X-Request-Id: dca89281-416a-4766-9428-d0295f58586e
13
- X-Runtime: 0.175179
14
- Strict-Transport-Security: max-age=31536000
15
-
16
- {"data":{"id":1,"url":"https://webhook.test"}}
1
+ HTTP/1.1 201 Created
2
+ Server: nginx
3
+ Date: Mon, 15 Feb 2016 17:04:38 GMT
4
+ Content-Type: application/json; charset=utf-8
5
+ Connection: keep-alive
6
+ Status: 201 Created
7
+ X-RateLimit-Limit: 4000
8
+ X-RateLimit-Remaining: 3996
9
+ X-RateLimit-Reset: 1455559348
10
+ ETag: W/"a4b43ee926d18d0839f1eae08e78c66b"
11
+ Cache-Control: max-age=0, private, must-revalidate
12
+ X-Request-Id: dca89281-416a-4766-9428-d0295f58586e
13
+ X-Runtime: 0.175179
14
+ Strict-Transport-Security: max-age=31536000
15
+
16
+ {"data":{"id":1,"url":"https://webhook.test","suppressed_at": null}}
@@ -1,10 +1,10 @@
1
- HTTP/1.1 201
1
+ HTTP/1.1 204 No Content
2
2
  server: nginx
3
3
  date: Tue, 22 Aug 2023 11:14:44 GMT
4
4
  content-type: application/json; charset=utf-8
5
- x-ratelimit-limit: 2400
6
- x-ratelimit-remaining: 2391
7
- x-ratelimit-reset: 1692705338
5
+ X-RateLimit-Limit: 2400
6
+ X-RateLimit-Remaining: 2391
7
+ X-RateLimit-Reset: 1692705338
8
8
  x-work-with-us: Love automation? So do we! https://dnsimple.com/jobs
9
9
  cache-control: no-cache
10
10
  x-request-id: b123e1f0-aa70-4abb-95cf-34f377c83ef4
@@ -0,0 +1,14 @@
1
+ HTTP/1.1 202
2
+ server: nginx
3
+ date: Tue, 22 Aug 2023 11:11:00 GMT
4
+ content-type: application/json; charset=utf-8
5
+ X-RateLimit-Limit: 2400
6
+ X-RateLimit-Remaining: 2394
7
+ X-RateLimit-Reset: 1692705339
8
+ x-work-with-us: Love automation? So do we! https://dnsimple.com/jobs
9
+ cache-control: no-cache
10
+ x-request-id: 26bf7ff9-2075-42b0-9431-1778c825b6b0
11
+ x-runtime: 3.408950
12
+ strict-transport-security: max-age=63072000
13
+
14
+ {"data":{"id":101,"account_id":101,"domain_id":101,"contact_id":101,"state":"cancelling","extended_attributes":{},"registry_owner_change":true,"irt_lock_lifted_by":null,"created_at":"2017-02-03T17:43:22Z","updated_at":"2017-02-03T17:43:22Z"}}
@@ -17,4 +17,4 @@ X-Permitted-Cross-Domain-Policies: none
17
17
  X-XSS-Protection: 1; mode=block
18
18
  Strict-Transport-Security: max-age=31536000
19
19
 
20
- {"data": {"headers": ["zone_name", "date", "volume"], "rows": [["bar.com", "2023-12-08", 1200], ["bar.com", "2023-12-09", 1200], ["bar.com", "2024-01-07", 1200], ["bar.com", "2024-01-08", 1200], ["example.com", "2023-12-08", 1200], ["example.com", "2023-12-09", 1200], ["example.com", "2024-01-07", 1200], ["example.com", "2024-01-08", 1200], ["foo.com", "2023-12-08", 1200], ["foo.com", "2023-12-09", 1200], ["foo.com", "2024-01-07", 1200], ["foo.com", "2024-01-08", 1200]]}, "query": {"account_id": "1", "start_date": "2023-12-08", "end_date": "2024-01-08", "sort": "zone_name:asc,date:asc", "page": 0, "per_page": 100, "groupings": "zone_name,date"}, "pagination": {"current_page": 0, "per_page": 100, "total_entries": 93, "total_pages": 1}}
20
+ {"data": {"headers": ["zone_name", "date", "volume"], "rows": [["bar.com", "2023-12-08", 1200], ["bar.com", "2023-12-09", 1200], ["bar.com", "2024-01-07", 1200], ["bar.com", "2024-01-08", 1200], ["example.com", "2023-12-08", 1200], ["example.com", "2023-12-09", 1200], ["example.com", "2024-01-07", 1200], ["example.com", "2024-01-08", 1200], ["foo.com", "2023-12-08", 1200], ["foo.com", "2023-12-09", 1200], ["foo.com", "2024-01-07", 1200], ["foo.com", "2024-01-08", 1200]]}, "query": {"account_id": 1, "start_date": "2023-12-08", "end_date": "2024-01-08", "sort": "zone_name:asc,date:asc", "page": 0, "per_page": 100, "groupings": "zone_name,date"}, "pagination": {"current_page": 0, "per_page": 100, "total_entries": 93, "total_pages": 1}}
@@ -1,19 +1,19 @@
1
- HTTP/1.1 400 Bad Request
2
- Server: nginx
3
- Date: Mon, 08 Mar 2021 14:35:58 GMT
4
- Content-Type: application/json; charset=utf-8
5
- Connection: keep-alive
6
- X-RateLimit-Limit: 2400
7
- X-RateLimit-Remaining: 2396
8
- X-RateLimit-Reset: 1615217645
9
- Cache-Control: no-cache
10
- X-Request-Id: e414a674-63bb-4e54-b714-db5b516bb190
11
- X-Runtime: 0.009579
12
- X-Frame-Options: DENY
13
- X-Content-Type-Options: nosniff
14
- X-XSS-Protection: 1; mode=block
15
- X-Download-Options: noopen
16
- X-Permitted-Cross-Domain-Policies: none
17
- Content-Security-Policy: frame-ancestors 'none'
18
-
1
+ HTTP/1.1 400 Bad Request
2
+ Server: nginx
3
+ Date: Mon, 08 Mar 2021 14:35:58 GMT
4
+ Content-Type: application/json; charset=utf-8
5
+ Connection: keep-alive
6
+ X-RateLimit-Limit: 2400
7
+ X-RateLimit-Remaining: 2396
8
+ X-RateLimit-Reset: 1615217645
9
+ Cache-Control: no-cache
10
+ X-Request-Id: e414a674-63bb-4e54-b714-db5b516bb190
11
+ X-Runtime: 0.009579
12
+ X-Frame-Options: DENY
13
+ X-Content-Type-Options: nosniff
14
+ X-XSS-Protection: 1; mode=block
15
+ X-Download-Options: noopen
16
+ X-Permitted-Cross-Domain-Policies: none
17
+ Content-Security-Policy: frame-ancestors 'none'
18
+
19
19
  {"message":"TLD .PINEAPPLE is not supported"}
@@ -1,21 +1,21 @@
1
- HTTP/1.1 200 OK
2
- Server: nginx
3
- Date: Mon, 08 Mar 2021 14:35:26 GMT
4
- Content-Type: application/json; charset=utf-8
5
- Connection: keep-alive
6
- X-RateLimit-Limit: 2400
7
- X-RateLimit-Remaining: 2397
8
- X-RateLimit-Reset: 1615217645
9
- ETag: W/"2104f27f2877f429295359cfc409f9f7"
10
- Cache-Control: max-age=0, private, must-revalidate
11
- X-Request-Id: b0d9e000-58a6-4254-af43-8735d26e12d9
12
- X-Runtime: 9.129301
13
- X-Frame-Options: DENY
14
- X-Content-Type-Options: nosniff
15
- X-XSS-Protection: 1; mode=block
16
- X-Download-Options: noopen
17
- X-Permitted-Cross-Domain-Policies: none
18
- Content-Security-Policy: frame-ancestors 'none'
19
- Strict-Transport-Security: max-age=31536000
20
-
21
- {"data":{"domain":"bingo.pizza","premium":true,"registration_price":20.0,"renewal_price":20.0,"transfer_price":20.0}}
1
+ HTTP/1.1 200 OK
2
+ Server: nginx
3
+ Date: Mon, 08 Mar 2021 14:35:26 GMT
4
+ Content-Type: application/json; charset=utf-8
5
+ Connection: keep-alive
6
+ X-RateLimit-Limit: 2400
7
+ X-RateLimit-Remaining: 2397
8
+ X-RateLimit-Reset: 1615217645
9
+ ETag: W/"2104f27f2877f429295359cfc409f9f7"
10
+ Cache-Control: max-age=0, private, must-revalidate
11
+ X-Request-Id: b0d9e000-58a6-4254-af43-8735d26e12d9
12
+ X-Runtime: 9.129301
13
+ X-Frame-Options: DENY
14
+ X-Content-Type-Options: nosniff
15
+ X-XSS-Protection: 1; mode=block
16
+ X-Download-Options: noopen
17
+ X-Permitted-Cross-Domain-Policies: none
18
+ Content-Security-Policy: frame-ancestors 'none'
19
+ Strict-Transport-Security: max-age=31536000
20
+
21
+ {"data":{"domain":"bingo.pizza","premium":true,"registration_price":20.0,"renewal_price":20.0,"transfer_price":20.0,"restore_price":20.0}}
@@ -1,20 +1,22 @@
1
- HTTP/1.1 201 Created
1
+ HTTP/1.1 200 OK
2
2
  Server: nginx
3
- Date: Fri, 09 Dec 2016 19:46:57 GMT
4
- Content-Type: application/json; charset=utf-8
3
+ Date: Sun, 18 Feb 2024 10:48:05 GMT
4
+ Content-Type: application/json
5
+ Content-Length: 120
5
6
  Connection: keep-alive
6
7
  X-RateLimit-Limit: 2400
7
- X-RateLimit-Remaining: 2394
8
- X-RateLimit-Reset: 1481315245
9
- ETag: W/"179d85ea8a26a3d5dc76e42de2d7918e"
10
- Cache-Control: max-age=0, private, must-revalidate
11
- X-Request-Id: ba6f2707-5df0-4ffa-b91b-51d4460bab8e
12
- X-Runtime: 13.571302
8
+ X-RateLimit-Remaining: 2398
9
+ X-RateLimit-Reset: 1547125899
10
+ X-WORK-WITH-US: Love automation? So do we! https://dnsimple.com/jobs
11
+ Cache-Control: no-cache
12
+ X-Request-Id: 2a8d691f-f47e-4d41-9916-eba67e683914
13
+ X-Runtime: 0.004845
14
+ X-Frame-Options: DENY
13
15
  X-Content-Type-Options: nosniff
16
+ X-XSS-Protection: 1; mode=block
14
17
  X-Download-Options: noopen
15
- X-Frame-Options: DENY
16
18
  X-Permitted-Cross-Domain-Policies: none
17
- X-XSS-Protection: 1; mode=block
18
- Strict-Transport-Security: max-age=31536000
19
+ Content-Security-Policy: frame-ancestors 'none'
20
+ Strict-Transport-Security: max-age=63072000
19
21
 
20
- {"data":{"id":1,"domain_id":999,"state":"restored","created_at":"2016-12-09T19:46:45Z","updated_at":"2016-12-12T19:46:45Z"}}
22
+ {"data":{"id":43,"domain_id":214,"state":"new","created_at":"2024-02-14T14:40:42Z","updated_at":"2024-02-14T14:40:42Z"}}
@@ -2,7 +2,6 @@ HTTP/1.1 200 OK
2
2
  Server: nginx
3
3
  Date: Mon, 25 Jan 2021 13:56:24 GMT
4
4
  Content-Type: application/json; charset=utf-8
5
- Transfer-Encoding: identity
6
5
  Connection: keep-alive
7
6
  X-RateLimit-Limit: 4800
8
7
  X-RateLimit-Remaining: 4766
@@ -19,4 +18,4 @@ X-Permitted-Cross-Domain-Policies: none
19
18
  Content-Security-Policy: frame-ancestors 'none'
20
19
  Strict-Transport-Security: max-age=31536000
21
20
 
22
- {"data":{"id":41872,"domain_id":235146,"alias_email":"example@dnsimple.xyz","destination_email":"example@example.com","created_at":"2021-01-25T13:54:40Z","updated_at":"2021-01-25T13:54:40Z","from":"example@dnsimple.xyz","to":"example@example.com"}}
21
+ {"data":{"id":41872,"domain_id":235146,"alias_email":"example@dnsimple.xyz","destination_email":"example@example.com","created_at":"2021-01-25T13:54:40Z","updated_at":"2021-01-25T13:54:40Z","from":"example@dnsimple.xyz","to":"example@example.com","active":true}}