dnsimple 9.0.1 → 11.0.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 (98) hide show
  1. checksums.yaml +4 -4
  2. data/.github/dependabot.yml +5 -7
  3. data/.github/workflows/ci.yml +4 -4
  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 +14 -30
  9. data/CHANGELOG.md +9 -0
  10. data/Gemfile +7 -7
  11. data/LICENSE.txt +1 -1
  12. data/README.md +3 -3
  13. data/lib/dnsimple/client/clients.rb +29 -31
  14. data/lib/dnsimple/client/domains_email_forwards.rb +1 -1
  15. data/lib/dnsimple/client.rb +5 -5
  16. data/lib/dnsimple/default.rb +7 -7
  17. data/lib/dnsimple/response.rb +3 -3
  18. data/lib/dnsimple/struct/charge.rb +1 -1
  19. data/lib/dnsimple/struct/email_forward.rb +0 -8
  20. data/lib/dnsimple/struct.rb +40 -40
  21. data/lib/dnsimple/version.rb +1 -1
  22. data/lib/dnsimple.rb +5 -5
  23. data/spec/dnsimple/client/accounts_spec.rb +2 -2
  24. data/spec/dnsimple/client/billing_spec.rb +3 -3
  25. data/spec/dnsimple/client/certificates_spec.rb +11 -11
  26. data/spec/dnsimple/client/client_service_spec.rb +1 -1
  27. data/spec/dnsimple/client/contacts_spec.rb +6 -6
  28. data/spec/dnsimple/client/dns_analytics_spec.rb +9 -9
  29. data/spec/dnsimple/client/domains_delegation_signer_records_spec.rb +5 -5
  30. data/spec/dnsimple/client/domains_dnssec_spec.rb +4 -4
  31. data/spec/dnsimple/client/domains_email_forwards_spec.rb +8 -15
  32. data/spec/dnsimple/client/domains_pushes_spec.rb +5 -5
  33. data/spec/dnsimple/client/domains_spec.rb +6 -6
  34. data/spec/dnsimple/client/identity_spec.rb +2 -2
  35. data/spec/dnsimple/client/oauth_spec.rb +3 -3
  36. data/spec/dnsimple/client/registrar_auto_renewal_spec.rb +3 -3
  37. data/spec/dnsimple/client/registrar_delegation_spec.rb +1 -1
  38. data/spec/dnsimple/client/registrar_spec.rb +1 -1
  39. data/spec/dnsimple/client/registrar_transfer_lock_spec.rb +4 -4
  40. data/spec/dnsimple/client/registrar_whois_privacy_spec.rb +1 -1
  41. data/spec/dnsimple/client/services_domains_spec.rb +4 -4
  42. data/spec/dnsimple/client/services_spec.rb +1 -1
  43. data/spec/dnsimple/client/templates_domains_spec.rb +2 -2
  44. data/spec/dnsimple/client/templates_records_spec.rb +4 -4
  45. data/spec/dnsimple/client/templates_spec.rb +2 -2
  46. data/spec/dnsimple/client/tlds_spec.rb +5 -5
  47. data/spec/dnsimple/client/vanity_name_servers_spec.rb +1 -1
  48. data/spec/dnsimple/client/webhooks_spec.rb +5 -5
  49. data/spec/dnsimple/client/zones_distributions_spec.rb +3 -3
  50. data/spec/dnsimple/client/zones_records_spec.rb +7 -7
  51. data/spec/dnsimple/client/zones_spec.rb +6 -6
  52. data/spec/dnsimple/client_spec.rb +10 -10
  53. data/spec/dnsimple/extra_spec.rb +1 -1
  54. data/spec/dnsimple/options/base_spec.rb +5 -5
  55. data/spec/dnsimple/options/list_options_spec.rb +21 -21
  56. data/spec/fixtures.http/accounts/success-user.http +2 -1
  57. data/spec/fixtures.http/checkRegistrantChange/error-contactnotfound.http +4 -4
  58. data/spec/fixtures.http/checkRegistrantChange/error-domainnotfound.http +4 -4
  59. data/spec/fixtures.http/checkRegistrantChange/success.http +5 -5
  60. data/spec/fixtures.http/createContact/error-validation-errors.http +18 -0
  61. data/spec/fixtures.http/createEmailForward/created.http +1 -2
  62. data/spec/fixtures.http/createRegistrantChange/success.http +5 -5
  63. data/spec/fixtures.http/createWebhook/created.http +16 -16
  64. data/spec/fixtures.http/deleteRegistrantChange/success.http +4 -4
  65. data/spec/fixtures.http/deleteRegistrantChange/success_async.http +14 -0
  66. data/spec/fixtures.http/dnsAnalytics/success.http +1 -1
  67. data/spec/fixtures.http/getDomainPrices/failure.http +18 -18
  68. data/spec/fixtures.http/getDomainPrices/success.http +21 -21
  69. data/spec/fixtures.http/getDomainRestore/success.http +13 -14
  70. data/spec/fixtures.http/getEmailForward/success.http +1 -2
  71. data/spec/fixtures.http/getRegistrantChange/success.http +5 -5
  72. data/spec/fixtures.http/getTld/success.http +1 -1
  73. data/spec/fixtures.http/getWebhook/success.http +16 -16
  74. data/spec/fixtures.http/listAccounts/success-user.http +1 -1
  75. data/spec/fixtures.http/listCharges/fail-400-bad-filter.http +0 -2
  76. data/spec/fixtures.http/listCharges/fail-403.http +0 -2
  77. data/spec/fixtures.http/listCharges/success.http +0 -2
  78. data/spec/fixtures.http/listEmailForwards/success.http +1 -1
  79. data/spec/fixtures.http/listRegistrantChanges/success.http +5 -5
  80. data/spec/fixtures.http/listTlds/success.http +1 -1
  81. data/spec/fixtures.http/listWebhooks/success.http +16 -16
  82. data/spec/fixtures.http/registerDomain/error-extended-attributes.http +18 -0
  83. data/spec/fixtures.http/restoreDomain/success.http +12 -13
  84. data/spec/fixtures.http/updateZoneNsRecords/success.http +16 -0
  85. data/spec/fixtures.http/whoami/success-account.http +1 -1
  86. data/spec/fixtures.http/whoami/success.http +1 -1
  87. data/spec/spec_helper.rb +4 -4
  88. data/spec/support/webmock.rb +1 -1
  89. metadata +7 -11
  90. data/.github/CODEOWNERS +0 -1
  91. data/.github/workflows/auto-merge.yml +0 -32
  92. data/lib/dnsimple/client/domains_collaborators.rb +0 -87
  93. data/spec/dnsimple/client/domains_collaborators_spec.rb +0 -164
  94. data/spec/fixtures.http/addCollaborator/invite-success.http +0 -20
  95. data/spec/fixtures.http/addCollaborator/success.http +0 -20
  96. data/spec/fixtures.http/listCollaborators/success.http +0 -20
  97. data/spec/fixtures.http/notfound-collaborator.http +0 -15
  98. data/spec/fixtures.http/removeCollaborator/success.http +0 -17
@@ -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
+
@@ -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,19 @@
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
- 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
7
+ X-WORK-WITH-US: Love automation? So do we! https://dnsimple.com/jobs
8
+ Cache-Control: no-cache
9
+ X-Request-Id: 2a8d691f-f47e-4d41-9916-eba67e683914
10
+ X-Runtime: 0.004845
11
+ X-Frame-Options: DENY
13
12
  X-Content-Type-Options: nosniff
13
+ X-XSS-Protection: 1; mode=block
14
14
  X-Download-Options: noopen
15
- X-Frame-Options: DENY
16
15
  X-Permitted-Cross-Domain-Policies: none
17
- X-XSS-Protection: 1; mode=block
18
- Strict-Transport-Security: max-age=31536000
16
+ Content-Security-Policy: frame-ancestors 'none'
17
+ Strict-Transport-Security: max-age=63072000
19
18
 
20
- {"data":{"id":1,"domain_id":999,"state":"restored","created_at":"2016-12-09T19:46:45Z","updated_at":"2016-12-12T19:46:45Z"}}
19
+ {"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}}
@@ -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:13:58 GMT
4
4
  content-type: application/json; charset=utf-8
5
- x-ratelimit-limit: 2400
6
- x-ratelimit-remaining: 2392
7
- x-ratelimit-reset: 1692705338
5
+ X-RateLimit-Limit: 2400
6
+ X-RateLimit-Remaining: 2392
7
+ X-RateLimit-Reset: 1692705338
8
8
  x-work-with-us: Love automation? So do we! https://dnsimple.com/jobs
9
9
  etag: W/"76c5d4c7579b754b94a42ac7fa37a901"
10
10
  cache-control: max-age=0, private, must-revalidate
@@ -12,4 +12,4 @@ x-request-id: e910cd08-3f9c-4da4-9986-50dbe9c3bc55
12
12
  x-runtime: 0.022006
13
13
  strict-transport-security: max-age=63072000
14
14
 
15
- {"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"}}
15
+ {"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"}}
@@ -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":{"tld":"com","tld_type":1,"whois_privacy":true,"auto_renew_only":false,"idn":true,"minimum_registration":1,"registration_enabled":true,"renewal_enabled":true,"transfer_enabled":true,"dnssec_interface_type":"ds"}}
20
+ {"data":{"tld":"com","tld_type":1,"whois_privacy":true,"auto_renew_only":false,"idn":true,"minimum_registration":1,"registration_enabled":true,"renewal_enabled":true,"transfer_enabled":true,"dnssec_interface_type":"ds","name_server_min":"2","name_server_max":"13"}}
@@ -1,16 +1,16 @@
1
- HTTP/1.1 200 OK
2
- Server: nginx
3
- Date: Mon, 15 Feb 2016 17:06:09 GMT
4
- Content-Type: application/json; charset=utf-8
5
- Connection: keep-alive
6
- Status: 200 OK
7
- X-RateLimit-Limit: 4000
8
- X-RateLimit-Remaining: 3992
9
- X-RateLimit-Reset: 1455559348
10
- ETag: W/"cbb707ff6fc185d71f5a8df3110f1379"
11
- Cache-Control: max-age=0, private, must-revalidate
12
- X-Request-Id: 0109ea48-b7f0-4f78-a970-6866653b83eb
13
- X-Runtime: 0.087618
14
- Strict-Transport-Security: max-age=31536000
15
-
16
- {"data":{"id":1,"url":"https://webhook.test"}}
1
+ HTTP/1.1 200 OK
2
+ Server: nginx
3
+ Date: Mon, 15 Feb 2016 17:06:09 GMT
4
+ Content-Type: application/json; charset=utf-8
5
+ Connection: keep-alive
6
+ Status: 200 OK
7
+ X-RateLimit-Limit: 4000
8
+ X-RateLimit-Remaining: 3992
9
+ X-RateLimit-Reset: 1455559348
10
+ ETag: W/"cbb707ff6fc185d71f5a8df3110f1379"
11
+ Cache-Control: max-age=0, private, must-revalidate
12
+ X-Request-Id: 0109ea48-b7f0-4f78-a970-6866653b83eb
13
+ X-Runtime: 0.087618
14
+ Strict-Transport-Security: max-age=31536000
15
+
16
+ {"data":{"id":1,"url":"https://webhook.test","suppressed_at":null}}
@@ -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":[{"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"}]}
@@ -1,6 +1,5 @@
1
1
  HTTP/1.1 400 Bad Request
2
2
  Date: Tue, 24 Oct 2023 08:13:01 GMT
3
- Connection: close
4
3
  X-RateLimit-Limit: 2400
5
4
  X-RateLimit-Remaining: 2392
6
5
  X-RateLimit-Reset: 1698136677
@@ -9,6 +8,5 @@ X-WORK-WITH-US: Love automation? So do we! https://dnsimple.com/jobs
9
8
  Cache-Control: no-cache
10
9
  X-Request-Id: bdfbf3a7-d9dc-4018-9732-61502be989a3
11
10
  X-Runtime: 0.455303
12
- Transfer-Encoding: chunked
13
11
 
14
12
  {"message":"Invalid date format must be ISO8601 (YYYY-MM-DD)"}
@@ -1,6 +1,5 @@
1
1
  HTTP/1.1 403 Forbidden
2
2
  Date: Tue, 24 Oct 2023 09:49:29 GMT
3
- Connection: close
4
3
  X-RateLimit-Limit: 2400
5
4
  X-RateLimit-Remaining: 2398
6
5
  X-RateLimit-Reset: 1698143967
@@ -9,6 +8,5 @@ X-WORK-WITH-US: Love automation? So do we! https://dnsimple.com/jobs
9
8
  Cache-Control: no-cache
10
9
  X-Request-Id: 5554e2d3-2652-4ca7-8c5e-92b4c35f28d6
11
10
  X-Runtime: 0.035309
12
- Transfer-Encoding: chunked
13
11
 
14
12
  {"message":"Permission Denied. Required Scope: billing:*:read"}
@@ -1,6 +1,5 @@
1
1
  HTTP/1.1 200 OK
2
2
  Date: Tue, 24 Oct 2023 09:52:55 GMT
3
- Connection: close
4
3
  X-RateLimit-Limit: 2400
5
4
  X-RateLimit-Remaining: 2397
6
5
  X-RateLimit-Reset: 1698143967
@@ -9,6 +8,5 @@ X-WORK-WITH-US: Love automation? So do we! https://dnsimple.com/jobs
9
8
  Cache-Control: no-store, must-revalidate, private, max-age=0
10
9
  X-Request-Id: a57a87c8-626a-4361-9fb8-b55ca9be8e5d
11
10
  X-Runtime: 0.060526
12
- Transfer-Encoding: chunked
13
11
 
14
12
  {"data":[{"invoiced_at":"2023-08-17T05:53:36Z","total_amount":"14.50","balance_amount":"0.00","reference":"1-2","state":"collected","items":[{"description":"Register bubble-registered.com","amount":"14.50","product_id":1,"product_type":"domain-registration","product_reference":"bubble-registered.com"}]},{"invoiced_at":"2023-08-17T05:57:53Z","total_amount":"14.50","balance_amount":"0.00","reference":"2-2","state":"refunded","items":[{"description":"Register example.com","amount":"14.50","product_id":2,"product_type":"domain-registration","product_reference":"example.com"}]},{"invoiced_at":"2023-10-24T07:49:05Z","total_amount":"1099999.99","balance_amount":"0.00","reference":"4-2","state":"collected","items":[{"description":"Test Line Item 1","amount":"99999.99","product_id":null,"product_type":"manual","product_reference":null},{"description":"Test Line Item 2","amount":"1000000.00","product_id":null,"product_type":"manual","product_reference":null}]}],"pagination":{"current_page":1,"per_page":30,"total_entries":3,"total_pages":1}}
@@ -13,4 +13,4 @@ X-Request-Id: e42df983-a8a5-4123-8c74-fb89ab934aba
13
13
  X-Runtime: 0.025456
14
14
  Strict-Transport-Security: max-age=63072000
15
15
 
16
- {"data":[{"id":24809,"domain_id":235146,"alias_email":"foo@a-domain.com","destination_email":"jane.smith@example.com","active":true,"created_at":"2017-05-25T19:23:16Z","updated_at":"2017-05-25T19:23:16Z","from":"foo@a-domain.com","to":"jane.smith@example.com"},{"id":24810,"domain_id":235146,"alias_email":"bar@a-domain.com","destination_email":"john.doe@example.com","active":false,"created_at":"2017-05-25T19:23:16Z","updated_at":"2017-05-25T19:23:16Z","from":"bar@a-domain.com","to":"john.doe@example.com"}],"pagination":{"current_page":1,"per_page":30,"total_entries":1,"total_pages":1}}
16
+ {"data":[{"id":24809,"domain_id":235146,"alias_email":".*@a-domain.com","destination_email":"jane.smith@example.com","created_at":"2017-05-25T19:23:16Z","updated_at":"2017-05-25T19:23:16Z","from":".*@a-domain.com","to":"jane.smith@example.com","active":true}],"pagination":{"current_page":1,"per_page":30,"total_entries":1,"total_pages":1}}
@@ -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:12:49 GMT
4
4
  content-type: application/json; charset=utf-8
5
- x-ratelimit-limit: 2400
6
- x-ratelimit-remaining: 2393
7
- x-ratelimit-reset: 1692705338
5
+ X-RateLimit-Limit: 2400
6
+ X-RateLimit-Remaining: 2393
7
+ X-RateLimit-Reset: 1692705338
8
8
  x-work-with-us: Love automation? So do we! https://dnsimple.com/jobs
9
9
  etag: W/"0049703ea058b06346df4c0e169eac29"
10
10
  cache-control: max-age=0, private, must-revalidate
@@ -12,4 +12,4 @@ x-request-id: fd0334ce-414a-4872-8889-e548e0b1410c
12
12
  x-runtime: 0.030759
13
13
  strict-transport-security: max-age=63072000
14
14
 
15
- {"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"}],"pagination":{"current_page":1,"per_page":30,"total_entries":1,"total_pages":1}}
15
+ {"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"}],"pagination":{"current_page":1,"per_page":30,"total_entries":1,"total_pages":1}}
@@ -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":[{"tld":"ac","tld_type":2,"whois_privacy":false,"auto_renew_only":true,"idn":false,"minimum_registration":1,"registration_enabled":true,"renewal_enabled":true,"transfer_enabled":false,"dnssec_interface_type":"ds"},{"tld":"academy","tld_type":3,"whois_privacy":true,"auto_renew_only":false,"idn":true,"minimum_registration":1,"registration_enabled":true,"renewal_enabled":true,"transfer_enabled":true,"dnssec_interface_type":"key"}],"pagination":{"current_page":1,"per_page":2,"total_entries":195,"total_pages":98}}
20
+ {"data":[{"tld":"ac","tld_type":2,"whois_privacy":false,"auto_renew_only":true,"idn":false,"minimum_registration":1,"registration_enabled":true,"renewal_enabled":true,"transfer_enabled":false,"dnssec_interface_type":"ds","name_server_min":"2","name_server_max":"13"},{"tld":"academy","tld_type":3,"whois_privacy":true,"auto_renew_only":false,"idn":true,"minimum_registration":1,"registration_enabled":true,"renewal_enabled":true,"transfer_enabled":true,"dnssec_interface_type":"key","name_server_min":"2","name_server_max":"13"}],"pagination":{"current_page":1,"per_page":2,"total_entries":195,"total_pages":98}}