dnsimple 8.4.0 → 8.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 34867970ac25f062a88e64df5c8ffc1a4cebb69612aea702cf6075ca79a9f9e7
4
- data.tar.gz: 79ffa15c0875466c11c175feeda98df3467ddeb0b2229c16aa6c92aecf1e0a39
3
+ metadata.gz: 446911b281dcecf8ebea06ee9429851c721acb7757b1deee3aef8cd5aa5bf556
4
+ data.tar.gz: 3bdc28942ca0dde6156122522849bfac6d03bee431a1b952db37b0b11445ffaa
5
5
  SHA512:
6
- metadata.gz: d7d71422305173c73b5dc948ffaf006d76b651697afc072b90e494dd9051c90424409ad7f16366bbec4ea5992fadcad6463c133c7b0ef522bbabe03c6b78f766
7
- data.tar.gz: 980c1e8c59db95933ab3d6e95eea871fcaaf9234b4866efbfc105c7da2fb841097a8e9aec2deb467d3ca1a6a7e9db79bcaed9b3851c6da4429c5799e3ded2a92
6
+ metadata.gz: e9c8fbf1c0f0a6af73adcf3a2ce7a77755525f60538b3e9ca4d8e6c63642370b480a7b8d3d2d03b2efab18422dc2a111ab677a26700bbffff944c516ec88554c
7
+ data.tar.gz: 490ad2dca6043a664a7858fb3a6f91880be430d2221c27b9dcc3f00112aa1d0fdca99216f27975996ad1ed7f1f931516c2844b6da36cde84ea44c28464e82e5b
data/CHANGELOG.md CHANGED
@@ -4,6 +4,16 @@ This project uses [Semantic Versioning 2.0.0](http://semver.org/).
4
4
 
5
5
  ## main
6
6
 
7
+ ## 8.5.0
8
+
9
+ FEATURES:
10
+
11
+ - NEW: Added `Dnsimple::Client::Registrar#check_registrant_change` to retrieves the requirements of a registrant change. (dnsimple/dnsimple-ruby#355)
12
+ - NEW: Added `Dnsimple::Client::Registrar#get_registrant_change` to retrieves the details of an existing registrant change. (dnsimple/dnsimple-ruby#355)
13
+ - NEW: Added `Dnsimple::Client::Registrar#create_registrant_change` to start registrant change. (dnsimple/dnsimple-ruby#355)
14
+ - NEW: Added `Dnsimple::Client::Registrar#list_registrant_changes` to lists the registrant changes for a domain. (dnsimple/dnsimple-ruby#355)
15
+ - NEW: Added `Dnsimple::Client::Registrar#delete_registrant_change` to cancel an ongoing registrant change from the account. (dnsimple/dnsimple-ruby#355)
16
+
7
17
  ## 8.4.0
8
18
 
9
19
  FEATURES:
@@ -160,17 +160,18 @@ module Dnsimple
160
160
  include Client::Oauth
161
161
  end
162
162
 
163
-
164
163
  require_relative 'registrar'
165
164
  require_relative 'registrar_auto_renewal'
166
165
  require_relative 'registrar_whois_privacy'
166
+ require_relative 'registrar_registrant_changes'
167
167
  require_relative 'registrar_delegation'
168
168
 
169
169
  class RegistrarService < ClientService
170
170
  include Client::Registrar
171
171
  include Client::RegistrarAutoRenewal
172
- include Client::RegistrarWhoisPrivacy
173
172
  include Client::RegistrarDelegation
173
+ include Client::RegistrarRegistrantChanges
174
+ include Client::RegistrarWhoisPrivacy
174
175
  end
175
176
 
176
177
 
@@ -0,0 +1,109 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dnsimple
4
+ class Client
5
+ module RegistrarRegistrantChanges
6
+
7
+ # Retrieves the requirements of a registrant change
8
+ #
9
+ # @example Check the requirements to change the contact for example.com to contact 1234:
10
+ # client.registrar.check_registrant_change(1010, { domain_id: "example.com", contact_id: 1234 })
11
+ #
12
+ # @param [Integer] account_id the account ID
13
+ # @param [Hash] attributes the attributes to check the registrant change
14
+ # @option attributes [String, Integer] :domain_id the domain ID to check
15
+ # @option attributes [Integer] :contact_id the contact ID to check against
16
+ # @param [Hash] options
17
+ # @return [Struct::RegistrantChangeCheck]
18
+ #
19
+ # @raise [RequestError] When the request fails.
20
+ def check_registrant_change(account_id, attributes, options = {})
21
+ Extra.validate_mandatory_attributes(attributes, [:domain_id, :contact_id])
22
+ endpoint = Client.versioned("/%s/registrar/registrant_changes/check" % [account_id])
23
+ response = client.post(endpoint, attributes, options)
24
+
25
+ Dnsimple::Response.new(response, Struct::RegistrantChangeCheck.new(response["data"]))
26
+ end
27
+
28
+ # Retrieves the details of an existing registrant change.
29
+ #
30
+ # @example Retrieve the registrant change 42:
31
+ # client.registrar.get_registrant_change(1010, 42)
32
+ #
33
+ # @param [Integer] account_id the Account id
34
+ # @param [#to_s] registrant_change_id the registrant change id
35
+ # @param [Hash] options
36
+ #
37
+ # @return [Struct::RegistrantChange]
38
+ #
39
+ # @raise [NotFoundError] When record is not found.
40
+ # @raise [RequestError] When the request fails.
41
+ def get_registrant_change(account_id, registrant_change_id, options = {})
42
+ endpoint = Client.versioned("/%s/registrar/registrant_changes/%s" % [account_id, registrant_change_id])
43
+ response = client.get(endpoint, options)
44
+
45
+ Dnsimple::Response.new(response, Struct::RegistrantChange.new(response["data"]))
46
+ end
47
+
48
+ # Start registrant change.
49
+ #
50
+ # @example Start a registrant change for example.com to contact 1234:
51
+ # including WHOIS privacy for the domain and enabling auto renewal:
52
+ # client.registrar.create_registrant_change(1010, { domain_id: "example.com", contact_id: 1234, extended_attributes: { "x-fi-registrant-idnumber" => "1234" } })
53
+ #
54
+ # @param [Integer] account_id the account ID
55
+ # @param [Hash] attributes the attributes to start a registrant change
56
+ # @option attributes [String, Integer] :domain_id the domain ID
57
+ # @option attributes [Integer] :contact_id the contact ID to change to
58
+ # @option attributes [Array<Hash>, nil] :extended_attributes the extended attributes to pass to the registry
59
+ # @param [Hash] options
60
+ # @return [Struct::RegistrantChange]
61
+ #
62
+ # @raise [RequestError] When the request fails.
63
+ def create_registrant_change(account_id, attributes, options = {})
64
+ Extra.validate_mandatory_attributes(attributes, [:domain_id, :contact_id])
65
+ endpoint = Client.versioned("/%s/registrar/registrant_changes" % [account_id])
66
+ response = client.post(endpoint, attributes, options)
67
+
68
+ Dnsimple::Response.new(response, Struct::RegistrantChange.new(response["data"]))
69
+ end
70
+
71
+ # List registrant changes in the account.
72
+ #
73
+ # @example List registrant changes for the account:
74
+ # client.registrar.list_registrant_changes(1010)
75
+ #
76
+ # @param [Integer] account_id the account ID
77
+ # @param [Hash] options
78
+ # @return [Dnsimple::PaginatedResponse<Struct::DomainRegistration>]
79
+ #
80
+ # @raise [NotFoundError] When record is not found.
81
+ # @raise [RequestError] When the request fails.
82
+ def list_registrant_changes(account_id, options = {})
83
+ endpoint = Client.versioned("/%s/registrar/registrant_changes" % [account_id])
84
+ response = client.get(endpoint, options)
85
+
86
+ Dnsimple::PaginatedResponse.new(response, response["data"].map { |r| Struct::RegistrantChange.new(r) })
87
+ end
88
+
89
+ # Cancel an ongoing registrant change from the account.
90
+ #
91
+ # @example Cancel a registrant change 42:
92
+ # client.registrar.delete_registrant_change(1010, 42)
93
+ #
94
+ # @param [Integer] account_id the account ID
95
+ # @param [#to_s] registrant_change_id the registrant change ID
96
+ # @param [Hash] options
97
+ # @return [Dnsimple::Response<nil>]
98
+ #
99
+ # @raise [NotFoundError] When record is not found.
100
+ # @raise [RequestError] When the request fails.
101
+ def delete_registrant_change(account_id, registrant_change_id, options = {})
102
+ endpoint = Client.versioned("/%s/registrar/registrant_changes/%s" % [account_id, registrant_change_id])
103
+ response = client.delete(endpoint, nil, options)
104
+
105
+ Dnsimple::Response.new(response, nil)
106
+ end
107
+ end
108
+ end
109
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dnsimple
4
+ module Struct
5
+
6
+ class RegistrantChange < Base
7
+ # @return [Integer] The registrant change ID in DNSimple.
8
+ attr_accessor :id
9
+
10
+ # @return [Integer] The associated account ID.
11
+ attr_accessor :account_id
12
+
13
+ # @return [Integer] The associated contact ID.
14
+ attr_accessor :contact_id
15
+
16
+ # @return [Integer] The associated domain ID.
17
+ attr_accessor :domain_id
18
+
19
+ # @return [String] The registrant change state.
20
+ attr_accessor :state
21
+
22
+ # @return [Hash] The extended attributes.
23
+ attr_accessor :extended_attributes
24
+
25
+ # @return [Boolean] True if the registrant change is a registry owner change.
26
+ attr_accessor :registry_owner_change
27
+
28
+ # @return [String] When the Inter-Registrar Transfer lock (60 days) is going to be lifted.
29
+ attr_accessor :irt_lock_lifted_by
30
+
31
+ # @return [String] When the registrant change was created in DNSimple.
32
+ attr_accessor :created_at
33
+
34
+ # @return [String] When the registrant change was last updated in DNSimple.
35
+ attr_accessor :updated_at
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,20 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Dnsimple
4
+ module Struct
5
+
6
+ class RegistrantChangeCheck < Base
7
+ # @return [Integer] The associated contact ID.
8
+ attr_accessor :contact_id
9
+
10
+ # @return [Integer] The associated domain ID.
11
+ attr_accessor :domain_id
12
+
13
+ # @return [Array<Hash>] The extended attributes.
14
+ attr_accessor :extended_attributes
15
+
16
+ # # @return [Boolean] True if the registrant change is a registry owner change.
17
+ attr_accessor :registry_owner_change
18
+ end
19
+ end
20
+ end
@@ -35,6 +35,8 @@ require_relative 'struct/domain_renewal'
35
35
  require_relative 'struct/email_forward'
36
36
  require_relative 'struct/extended_attribute'
37
37
  require_relative 'struct/oauth_token'
38
+ require_relative 'struct/registrant_change_check'
39
+ require_relative 'struct/registrant_change'
38
40
  require_relative 'struct/zone_record'
39
41
  require_relative 'struct/service'
40
42
  require_relative 'struct/template'
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dnsimple
4
- VERSION = "8.4.0"
4
+ VERSION = "8.5.0"
5
5
  end
@@ -3,7 +3,6 @@
3
3
  require 'spec_helper'
4
4
 
5
5
  describe Dnsimple::Client, ".registrar" do
6
-
7
6
  subject { described_class.new(base_url: "https://api.dnsimple.test", access_token: "a1b2c3").registrar }
8
7
 
9
8
 
@@ -283,7 +282,7 @@ describe Dnsimple::Client, ".registrar" do
283
282
  result = response.data
284
283
  expect(result).to be_a(Dnsimple::Struct::DomainTransfer)
285
284
  expect(result.id).to eq(361)
286
- expect(result.domain_id).to eq(182245)
285
+ expect(result.domain_id).to eq(182_245)
287
286
  expect(result.registrant_id).to eq(2715)
288
287
  expect(result.state).to eq("cancelled")
289
288
  expect(result.auto_renew).to be(false)
@@ -316,7 +315,7 @@ describe Dnsimple::Client, ".registrar" do
316
315
  result = response.data
317
316
  expect(result).to be_a(Dnsimple::Struct::DomainTransfer)
318
317
  expect(result.id).to eq(361)
319
- expect(result.domain_id).to eq(182245)
318
+ expect(result.domain_id).to eq(182_245)
320
319
  expect(result.registrant_id).to eq(2715)
321
320
  expect(result.state).to eq("transferring")
322
321
  expect(result.auto_renew).to be(false)
@@ -352,4 +351,224 @@ describe Dnsimple::Client, ".registrar" do
352
351
  end
353
352
  end
354
353
 
354
+ describe "#check_registrant_change" do
355
+ let(:account_id) { 1010 }
356
+ let(:attributes) { { domain_id: "example.com", contact_id: 1234 } }
357
+
358
+ before do
359
+ stub_request(:post, %r{/v2/#{account_id}/registrar/registrant_changes/check$})
360
+ .to_return(read_http_fixture("checkRegistrantChange/success.http"))
361
+ end
362
+
363
+ it "builds the correct request" do
364
+ subject.check_registrant_change(account_id, attributes)
365
+
366
+ expect(WebMock).to have_requested(:post, "https://api.dnsimple.test/v2/#{account_id}/registrar/registrant_changes/check")
367
+ .with(headers: { "Accept" => "application/json" })
368
+ .with(body: attributes)
369
+ end
370
+
371
+ it "returns the registrant change check" do
372
+ response = subject.check_registrant_change(account_id, attributes)
373
+ expect(response).to be_a(Dnsimple::Response)
374
+
375
+ result = response.data
376
+ expect(result).to be_a(Dnsimple::Struct::RegistrantChangeCheck)
377
+ expect(result.contact_id).to eq(101)
378
+ expect(result.domain_id).to eq(101)
379
+ expect(result.extended_attributes).to be_a(Array)
380
+ expect(result.extended_attributes).to be_empty
381
+ expect(result.registry_owner_change).to be(true)
382
+ end
383
+
384
+ context "when the attributes are incomplete" do
385
+ it "raises ArgumentError" do
386
+ expect { subject.check_registrant_change(account_id, domain_id: "example.com") }.to raise_error(ArgumentError)
387
+ end
388
+ end
389
+
390
+ context "when the domain is not found" do
391
+ it "raises a NotFoundError" do
392
+ stub_request(:post, %r{/v2/#{account_id}/registrar/registrant_changes/check$})
393
+ .to_return(read_http_fixture("checkRegistrantChange/error-domainnotfound.http"))
394
+
395
+ expect {
396
+ subject.check_registrant_change(account_id, attributes)
397
+ }.to raise_error(Dnsimple::NotFoundError)
398
+ end
399
+ end
400
+
401
+ context "when the contact is not found" do
402
+ it "raises a NotFoundError" do
403
+ stub_request(:post, %r{/v2/#{account_id}/registrar/registrant_changes/check$})
404
+ .to_return(read_http_fixture("checkRegistrantChange/error-contactnotfound.http"))
405
+
406
+ expect {
407
+ subject.check_registrant_change(account_id, attributes)
408
+ }.to raise_error(Dnsimple::NotFoundError)
409
+ end
410
+ end
411
+ end
412
+
413
+ describe "#get_registrant_change" do
414
+ let(:account_id) { 1010 }
415
+
416
+ before do
417
+ stub_request(:get, %r{/v2/#{account_id}/registrar/registrant_changes/.+$})
418
+ .to_return(read_http_fixture("getRegistrantChange/success.http"))
419
+ end
420
+
421
+ it "builds the correct request" do
422
+ subject.get_registrant_change(account_id, registrant_change_id = 42)
423
+
424
+ expect(WebMock).to have_requested(:get, "https://api.dnsimple.test/v2/#{account_id}/registrar/registrant_changes/#{registrant_change_id}")
425
+ .with(headers: { "Accept" => "application/json" })
426
+ end
427
+
428
+ it "returns the registrant change" do
429
+ response = subject.get_registrant_change(account_id, 42)
430
+ expect(response).to be_a(Dnsimple::Response)
431
+
432
+ result = response.data
433
+ expect(result).to be_a(Dnsimple::Struct::RegistrantChange)
434
+ expect(result.id).to eq(101)
435
+ expect(result.account_id).to eq(101)
436
+ expect(result.contact_id).to eq(101)
437
+ expect(result.domain_id).to eq(101)
438
+ expect(result.state).to eq("new")
439
+ expect(result.extended_attributes).to be_a(Hash)
440
+ expect(result.extended_attributes).to be_empty
441
+ expect(result.registry_owner_change).to be(true)
442
+ expect(result.irt_lock_lifted_by).to be_nil
443
+ expect(result.created_at).to eq("2017-02-03T17:43:22Z")
444
+ expect(result.updated_at).to eq("2017-02-03T17:43:22Z")
445
+ end
446
+ end
447
+
448
+ describe "#create_registrant_change" do
449
+ let(:account_id) { 1010 }
450
+ let(:attributes) { { domain_id: "example.com", contact_id: 1234, extended_attributes: { "x-fi-registrant-idnumber" => "1234" } } }
451
+
452
+ before do
453
+ stub_request(:post, %r{/v2/#{account_id}/registrar/registrant_changes$})
454
+ .to_return(read_http_fixture("createRegistrantChange/success.http"))
455
+ end
456
+
457
+ it "builds the correct request" do
458
+ subject.create_registrant_change(account_id, attributes)
459
+
460
+ expect(WebMock).to have_requested(:post, "https://api.dnsimple.test/v2/#{account_id}/registrar/registrant_changes")
461
+ .with(headers: { "Accept" => "application/json" })
462
+ .with(body: attributes)
463
+ end
464
+
465
+ it "returns the registrant change" do
466
+ response = subject.create_registrant_change(account_id, attributes)
467
+ expect(response).to be_a(Dnsimple::Response)
468
+
469
+ result = response.data
470
+ expect(result).to be_a(Dnsimple::Struct::RegistrantChange)
471
+ expect(result.id).to eq(101)
472
+ expect(result.account_id).to eq(101)
473
+ expect(result.contact_id).to eq(101)
474
+ expect(result.domain_id).to eq(101)
475
+ expect(result.state).to eq("new")
476
+ expect(result.extended_attributes).to be_a(Hash)
477
+ expect(result.extended_attributes).to be_empty
478
+ expect(result.registry_owner_change).to be(true)
479
+ expect(result.irt_lock_lifted_by).to be_nil
480
+ expect(result.created_at).to eq("2017-02-03T17:43:22Z")
481
+ expect(result.updated_at).to eq("2017-02-03T17:43:22Z")
482
+ end
483
+
484
+ context "when the attributes are incomplete" do
485
+ it "raises ArgumentError" do
486
+ expect { subject.create_registrant_change(account_id, domain_id: "example.com") }.to raise_error(ArgumentError)
487
+ end
488
+ end
489
+
490
+ context "when the domain is not found" do
491
+ it "raises a NotFoundError" do
492
+ stub_request(:post, %r{/v2/#{account_id}/registrar/registrant_changes$})
493
+ .to_return(read_http_fixture("checkRegistrantChange/error-domainnotfound.http"))
494
+
495
+ expect {
496
+ subject.create_registrant_change(account_id, attributes)
497
+ }.to raise_error(Dnsimple::NotFoundError)
498
+ end
499
+ end
500
+
501
+ context "when the contact is not found" do
502
+ it "raises a NotFoundError" do
503
+ stub_request(:post, %r{/v2/#{account_id}/registrar/registrant_changes$})
504
+ .to_return(read_http_fixture("checkRegistrantChange/error-contactnotfound.http"))
505
+
506
+ expect {
507
+ subject.create_registrant_change(account_id, attributes)
508
+ }.to raise_error(Dnsimple::NotFoundError)
509
+ end
510
+ end
511
+ end
512
+
513
+ describe "#list_registrant_changes" do
514
+ let(:account_id) { 1010 }
515
+
516
+ before do
517
+ stub_request(:get, %r{/v2/#{account_id}/registrar/registrant_changes$})
518
+ .to_return(read_http_fixture("listRegistrantChanges/success.http"))
519
+ end
520
+
521
+ it "builds the correct request" do
522
+ subject.list_registrant_changes(account_id)
523
+
524
+ expect(WebMock).to have_requested(:get, "https://api.dnsimple.test/v2/#{account_id}/registrar/registrant_changes")
525
+ .with(headers: { "Accept" => "application/json" })
526
+ end
527
+
528
+ it "returns the registrant changes" do
529
+ response = subject.list_registrant_changes(account_id)
530
+ expect(response).to be_a(Dnsimple::PaginatedResponse)
531
+
532
+ results = response.data
533
+
534
+ results.each do |result|
535
+ expect(result).to be_a(Dnsimple::Struct::RegistrantChange)
536
+ expect(result.id).to be_a(Integer)
537
+ expect(result.account_id).to be_a(Integer)
538
+ expect(result.contact_id).to be_a(Integer)
539
+ expect(result.domain_id).to be_a(Integer)
540
+ expect(result.state).to be_a(String)
541
+ expect(result.extended_attributes).to be_a(Hash)
542
+ expect(result.extended_attributes).to be_empty
543
+ expect(result.registry_owner_change).to be(true).or be(false)
544
+ expect(result.irt_lock_lifted_by).to be_nil
545
+ expect(result.created_at).to be_a(String)
546
+ expect(result.updated_at).to be_a(String)
547
+ end
548
+ end
549
+ end
550
+
551
+ describe "#delete_registrant_change" do
552
+ let(:account_id) { 1010 }
553
+
554
+ before do
555
+ stub_request(:delete, %r{/v2/#{account_id}/registrar/registrant_changes/.+$})
556
+ .to_return(read_http_fixture("deleteRegistrantChange/success.http"))
557
+ end
558
+
559
+ it "builds the correct request" do
560
+ subject.delete_registrant_change(account_id, registrant_change_id = 42)
561
+
562
+ expect(WebMock).to have_requested(:delete, "https://api.dnsimple.test/v2/#{account_id}/registrar/registrant_changes/#{registrant_change_id}")
563
+ .with(headers: { "Accept" => "application/json" })
564
+ end
565
+
566
+ it "returns nothing" do
567
+ response = subject.delete_registrant_change(account_id, 42)
568
+ expect(response).to be_a(Dnsimple::Response)
569
+
570
+ result = response.data
571
+ expect(result).to be_nil
572
+ end
573
+ end
355
574
  end
@@ -0,0 +1,14 @@
1
+ HTTP/1.1 404
2
+ server: nginx
3
+ date: Tue, 22 Aug 2023 13:59:02 GMT
4
+ content-type: application/json; charset=utf-8
5
+ x-ratelimit-limit: 2400
6
+ x-ratelimit-remaining: 2398
7
+ x-ratelimit-reset: 1692716201
8
+ x-work-with-us: Love automation? So do we! https://dnsimple.com/jobs
9
+ cache-control: no-cache
10
+ x-request-id: b1dd3f42-ebb9-42fd-a121-d595de96f667
11
+ x-runtime: 0.019122
12
+ strict-transport-security: max-age=63072000
13
+
14
+ {"message":"Contact `21` not found"}
@@ -0,0 +1,15 @@
1
+ HTTP/1.1 404
2
+ server: nginx
3
+ date: Tue, 22 Aug 2023 11:09:40 GMT
4
+ content-type: application/json; charset=utf-8
5
+ x-ratelimit-limit: 2400
6
+ x-ratelimit-remaining: 2395
7
+ x-ratelimit-reset: 1692705338
8
+ x-work-with-us: Love automation? So do we! https://dnsimple.com/jobs
9
+ etag: W/"cef1e7d85d0b9bfd25e81b812891d34f"
10
+ cache-control: max-age=0, private, must-revalidate
11
+ x-request-id: 5b0d8bfb-7b6a-40b5-a079-b640fd817e34
12
+ x-runtime: 3.066249
13
+ strict-transport-security: max-age=63072000
14
+
15
+ {"message":"Domain `example.com` not found"}
@@ -0,0 +1,15 @@
1
+ HTTP/1.1 200
2
+ server: nginx
3
+ date: Tue, 22 Aug 2023 11:09:40 GMT
4
+ content-type: application/json; charset=utf-8
5
+ x-ratelimit-limit: 2400
6
+ x-ratelimit-remaining: 2395
7
+ x-ratelimit-reset: 1692705338
8
+ x-work-with-us: Love automation? So do we! https://dnsimple.com/jobs
9
+ etag: W/"cef1e7d85d0b9bfd25e81b812891d34f"
10
+ cache-control: max-age=0, private, must-revalidate
11
+ x-request-id: 5b0d8bfb-7b6a-40b5-a079-b640fd817e34
12
+ x-runtime: 3.066249
13
+ strict-transport-security: max-age=63072000
14
+
15
+ {"data":{"domain_id":101,"contact_id":101,"extended_attributes":[],"registry_owner_change":true}}
@@ -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":"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"}}
@@ -0,0 +1,13 @@
1
+ HTTP/1.1 201
2
+ server: nginx
3
+ date: Tue, 22 Aug 2023 11:14:44 GMT
4
+ content-type: application/json; charset=utf-8
5
+ x-ratelimit-limit: 2400
6
+ x-ratelimit-remaining: 2391
7
+ x-ratelimit-reset: 1692705338
8
+ x-work-with-us: Love automation? So do we! https://dnsimple.com/jobs
9
+ cache-control: no-cache
10
+ x-request-id: b123e1f0-aa70-4abb-95cf-34f377c83ef4
11
+ x-runtime: 0.114839
12
+ strict-transport-security: max-age=63072000
13
+
@@ -0,0 +1,15 @@
1
+ HTTP/1.1 200
2
+ server: nginx
3
+ date: Tue, 22 Aug 2023 11:13:58 GMT
4
+ content-type: application/json; charset=utf-8
5
+ x-ratelimit-limit: 2400
6
+ x-ratelimit-remaining: 2392
7
+ x-ratelimit-reset: 1692705338
8
+ x-work-with-us: Love automation? So do we! https://dnsimple.com/jobs
9
+ etag: W/"76c5d4c7579b754b94a42ac7fa37a901"
10
+ cache-control: max-age=0, private, must-revalidate
11
+ x-request-id: e910cd08-3f9c-4da4-9986-50dbe9c3bc55
12
+ x-runtime: 0.022006
13
+ strict-transport-security: max-age=63072000
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"}}
@@ -0,0 +1,15 @@
1
+ HTTP/1.1 200
2
+ server: nginx
3
+ date: Tue, 22 Aug 2023 11:12:49 GMT
4
+ content-type: application/json; charset=utf-8
5
+ x-ratelimit-limit: 2400
6
+ x-ratelimit-remaining: 2393
7
+ x-ratelimit-reset: 1692705338
8
+ x-work-with-us: Love automation? So do we! https://dnsimple.com/jobs
9
+ etag: W/"0049703ea058b06346df4c0e169eac29"
10
+ cache-control: max-age=0, private, must-revalidate
11
+ x-request-id: fd0334ce-414a-4872-8889-e548e0b1410c
12
+ x-runtime: 0.030759
13
+ strict-transport-security: max-age=63072000
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}}
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dnsimple
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.4.0
4
+ version: 8.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - DNSimple
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-08-10 00:00:00.000000000 Z
11
+ date: 2023-08-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -124,6 +124,7 @@ files:
124
124
  - lib/dnsimple/client/registrar.rb
125
125
  - lib/dnsimple/client/registrar_auto_renewal.rb
126
126
  - lib/dnsimple/client/registrar_delegation.rb
127
+ - lib/dnsimple/client/registrar_registrant_changes.rb
127
128
  - lib/dnsimple/client/registrar_whois_privacy.rb
128
129
  - lib/dnsimple/client/services.rb
129
130
  - lib/dnsimple/client/services_domains.rb
@@ -162,6 +163,8 @@ files:
162
163
  - lib/dnsimple/struct/email_forward.rb
163
164
  - lib/dnsimple/struct/extended_attribute.rb
164
165
  - lib/dnsimple/struct/oauth_token.rb
166
+ - lib/dnsimple/struct/registrant_change.rb
167
+ - lib/dnsimple/struct/registrant_change_check.rb
165
168
  - lib/dnsimple/struct/service.rb
166
169
  - lib/dnsimple/struct/template.rb
167
170
  - lib/dnsimple/struct/template_record.rb
@@ -227,6 +230,9 @@ files:
227
230
  - spec/fixtures.http/checkDomainPremiumPrice/error_400_not_a_premium_domain.http
228
231
  - spec/fixtures.http/checkDomainPremiumPrice/error_400_tld_not_supported.http
229
232
  - spec/fixtures.http/checkDomainPremiumPrice/success.http
233
+ - spec/fixtures.http/checkRegistrantChange/error-contactnotfound.http
234
+ - spec/fixtures.http/checkRegistrantChange/error-domainnotfound.http
235
+ - spec/fixtures.http/checkRegistrantChange/success.http
230
236
  - spec/fixtures.http/checkZoneDistribution/error.http
231
237
  - spec/fixtures.http/checkZoneDistribution/failure.http
232
238
  - spec/fixtures.http/checkZoneDistribution/success.http
@@ -239,6 +245,7 @@ files:
239
245
  - spec/fixtures.http/createDomain/created.http
240
246
  - spec/fixtures.http/createEmailForward/created.http
241
247
  - spec/fixtures.http/createPrimaryServer/created.http
248
+ - spec/fixtures.http/createRegistrantChange/success.http
242
249
  - spec/fixtures.http/createSecondaryZone/created.http
243
250
  - spec/fixtures.http/createTemplate/created.http
244
251
  - spec/fixtures.http/createTemplateRecord/created.http
@@ -251,6 +258,7 @@ files:
251
258
  - spec/fixtures.http/deleteDelegationSignerRecord/success.http
252
259
  - spec/fixtures.http/deleteDomain/success.http
253
260
  - spec/fixtures.http/deleteEmailForward/success.http
261
+ - spec/fixtures.http/deleteRegistrantChange/success.http
254
262
  - spec/fixtures.http/deleteTemplate/success.http
255
263
  - spec/fixtures.http/deleteTemplateRecord/success.http
256
264
  - spec/fixtures.http/deleteWebhook/success.http
@@ -283,6 +291,7 @@ files:
283
291
  - spec/fixtures.http/getDomainTransfer/success.http
284
292
  - spec/fixtures.http/getEmailForward/success.http
285
293
  - spec/fixtures.http/getPrimaryServer/success.http
294
+ - spec/fixtures.http/getRegistrantChange/success.http
286
295
  - spec/fixtures.http/getService/success.http
287
296
  - spec/fixtures.http/getTemplate/success.http
288
297
  - spec/fixtures.http/getTemplateRecord/success.http
@@ -309,6 +318,7 @@ files:
309
318
  - spec/fixtures.http/listEmailForwards/success.http
310
319
  - spec/fixtures.http/listPrimaryServers/success.http
311
320
  - spec/fixtures.http/listPushes/success.http
321
+ - spec/fixtures.http/listRegistrantChanges/success.http
312
322
  - spec/fixtures.http/listServices/success.http
313
323
  - spec/fixtures.http/listTemplateRecords/success.http
314
324
  - spec/fixtures.http/listTemplates/success.http