dnsimple 11.1.0 → 12.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.
- checksums.yaml +4 -4
- data/.github/workflows/ci.yml +10 -5
- data/.github/workflows/release.yml +44 -13
- data/.github/workflows/sync-test-fixtures.yml +1 -1
- data/.rubocop.yml +4 -1
- data/.rubocop_dnsimple.yml +13 -41
- data/.rubocop_todo.yml +4 -9
- data/CHANGELOG.md +285 -183
- data/CONTRIBUTING.md +6 -40
- data/Gemfile +1 -1
- data/LICENSE.txt +1 -1
- data/README.md +49 -40
- data/RELEASING.md +67 -0
- data/dnsimple.gemspec +1 -1
- data/lib/dnsimple/client/accounts.rb +1 -3
- data/lib/dnsimple/client/billing.rb +2 -4
- data/lib/dnsimple/client/certificates.rb +0 -2
- data/lib/dnsimple/client/clients.rb +2 -40
- data/lib/dnsimple/client/contacts.rb +17 -19
- data/lib/dnsimple/client/dns_analytics.rb +2 -4
- data/lib/dnsimple/client/domains.rb +13 -15
- data/lib/dnsimple/client/domains_delegation_signer_records.rb +18 -20
- data/lib/dnsimple/client/domains_dnssec.rb +9 -11
- data/lib/dnsimple/client/domains_email_forwards.rb +18 -20
- data/lib/dnsimple/client/domains_pushes.rb +13 -15
- data/lib/dnsimple/client/identity.rb +4 -9
- data/lib/dnsimple/client/oauth.rb +1 -3
- data/lib/dnsimple/client/registrar.rb +45 -47
- data/lib/dnsimple/client/registrar_auto_renewal.rb +6 -8
- data/lib/dnsimple/client/registrar_delegation.rb +14 -16
- data/lib/dnsimple/client/registrar_registrant_changes.rb +14 -16
- data/lib/dnsimple/client/registrar_transfer_lock.rb +9 -11
- data/lib/dnsimple/client/registrar_whois_privacy.rb +6 -48
- data/lib/dnsimple/client/services.rb +4 -6
- data/lib/dnsimple/client/services_domains.rb +12 -14
- data/lib/dnsimple/client/templates.rb +17 -19
- data/lib/dnsimple/client/templates_domains.rb +4 -6
- data/lib/dnsimple/client/templates_records.rb +18 -20
- data/lib/dnsimple/client/tlds.rb +6 -8
- data/lib/dnsimple/client/vanity_name_servers.rb +0 -2
- data/lib/dnsimple/client/webhooks.rb +11 -13
- data/lib/dnsimple/client/zones.rb +16 -18
- data/lib/dnsimple/client/zones_distributions.rb +4 -6
- data/lib/dnsimple/client/zones_records.rb +29 -31
- data/lib/dnsimple/client.rb +22 -24
- data/lib/dnsimple/default.rb +0 -4
- data/lib/dnsimple/error.rb +0 -6
- data/lib/dnsimple/extra.rb +4 -6
- data/lib/dnsimple/options.rb +1 -7
- data/lib/dnsimple/response.rb +4 -13
- data/lib/dnsimple/struct/account.rb +0 -2
- data/lib/dnsimple/struct/certificate.rb +0 -2
- data/lib/dnsimple/struct/certificate_bundle.rb +0 -2
- data/lib/dnsimple/struct/certificate_purchase.rb +0 -2
- data/lib/dnsimple/struct/certificate_renewal.rb +0 -2
- data/lib/dnsimple/struct/charge.rb +4 -8
- data/lib/dnsimple/struct/collaborator.rb +0 -2
- data/lib/dnsimple/struct/contact.rb +0 -2
- data/lib/dnsimple/struct/delegation_signer_record.rb +0 -2
- data/lib/dnsimple/struct/dns_analytics.rb +0 -2
- data/lib/dnsimple/struct/dnssec.rb +0 -2
- data/lib/dnsimple/struct/domain.rb +0 -2
- data/lib/dnsimple/struct/domain_check.rb +0 -2
- data/lib/dnsimple/struct/domain_premium_price.rb +0 -2
- data/lib/dnsimple/struct/domain_price.rb +0 -2
- data/lib/dnsimple/struct/domain_push.rb +0 -2
- data/lib/dnsimple/struct/domain_registration.rb +0 -2
- data/lib/dnsimple/struct/domain_renewal.rb +0 -2
- data/lib/dnsimple/struct/domain_restore.rb +0 -2
- data/lib/dnsimple/struct/domain_transfer.rb +0 -2
- data/lib/dnsimple/struct/email_forward.rb +0 -2
- data/lib/dnsimple/struct/extended_attribute.rb +0 -4
- data/lib/dnsimple/struct/oauth_token.rb +0 -2
- data/lib/dnsimple/struct/registrant_change.rb +0 -2
- data/lib/dnsimple/struct/registrant_change_check.rb +0 -2
- data/lib/dnsimple/struct/service.rb +0 -4
- data/lib/dnsimple/struct/template.rb +0 -2
- data/lib/dnsimple/struct/template_record.rb +0 -2
- data/lib/dnsimple/struct/tld.rb +0 -2
- data/lib/dnsimple/struct/transfer_lock.rb +0 -2
- data/lib/dnsimple/struct/user.rb +0 -2
- data/lib/dnsimple/struct/vanity_name_server.rb +0 -2
- data/lib/dnsimple/struct/webhook.rb +0 -2
- data/lib/dnsimple/struct/whoami.rb +2 -4
- data/lib/dnsimple/struct/whois_privacy.rb +0 -2
- data/lib/dnsimple/struct/zone.rb +0 -2
- data/lib/dnsimple/struct/zone_distribution.rb +0 -2
- data/lib/dnsimple/struct/zone_file.rb +0 -2
- data/lib/dnsimple/struct/zone_record.rb +0 -2
- data/lib/dnsimple/struct/zone_record_id.rb +0 -2
- data/lib/dnsimple/struct/zone_records_batch_change.rb +0 -2
- data/lib/dnsimple/struct.rb +0 -3
- data/lib/dnsimple/version.rb +1 -3
- data/lib/dnsimple.rb +1 -3
- data/spec/dnsimple/client/client_service_spec.rb +12 -10
- data/spec/dnsimple/client/oauth_spec.rb +6 -6
- data/spec/dnsimple/client/registrar_whois_privacy_spec.rb +0 -82
- data/spec/fixtures.http/acceptPush/success.http +15 -15
- data/spec/fixtures.http/accounts/success-account.http +20 -20
- data/spec/fixtures.http/accounts/success-user.http +21 -21
- data/spec/fixtures.http/activateZoneService/success.http +16 -16
- data/spec/fixtures.http/appliedServices/success.http +19 -19
- data/spec/fixtures.http/applyService/success.http +15 -15
- data/spec/fixtures.http/applyTemplate/success.http +13 -13
- data/spec/fixtures.http/authorizeDomainTransferOut/success.http +13 -13
- data/spec/fixtures.http/badgateway.http +5 -5
- data/spec/fixtures.http/batchChangeZoneRecords/error_400_create_validation_failed.http +16 -16
- data/spec/fixtures.http/batchChangeZoneRecords/error_400_delete_validation_failed.http +3 -3
- data/spec/fixtures.http/batchChangeZoneRecords/error_400_update_validation_failed.http +3 -3
- data/spec/fixtures.http/batchChangeZoneRecords/success.http +16 -16
- data/spec/fixtures.http/cancelDomainTransfer/success.http +17 -17
- data/spec/fixtures.http/changeDomainDelegation/success.http +15 -15
- data/spec/fixtures.http/changeDomainDelegationFromVanity/success.http +15 -15
- data/spec/fixtures.http/changeDomainDelegationToVanity/success.http +17 -17
- data/spec/fixtures.http/checkDomain/success.http +15 -15
- data/spec/fixtures.http/checkRegistrantChange/error-contactnotfound.http +3 -3
- data/spec/fixtures.http/checkRegistrantChange/error-domainnotfound.http +3 -3
- data/spec/fixtures.http/checkRegistrantChange/success.http +15 -15
- data/spec/fixtures.http/checkZoneDistribution/error.http +17 -17
- data/spec/fixtures.http/checkZoneDistribution/failure.http +17 -17
- data/spec/fixtures.http/checkZoneDistribution/success.http +17 -17
- data/spec/fixtures.http/checkZoneRecordDistribution/error.http +17 -17
- data/spec/fixtures.http/checkZoneRecordDistribution/failure.http +17 -17
- data/spec/fixtures.http/checkZoneRecordDistribution/success.http +17 -17
- data/spec/fixtures.http/createContact/created.http +16 -16
- data/spec/fixtures.http/createContact/error-validation-errors.http +15 -15
- data/spec/fixtures.http/createDelegationSignerRecord/created.http +17 -17
- data/spec/fixtures.http/createDelegationSignerRecord/validation-error.http +15 -15
- data/spec/fixtures.http/createDomain/created.http +19 -19
- data/spec/fixtures.http/createEmailForward/created.http +21 -21
- data/spec/fixtures.http/createPrimaryServer/created.http +20 -20
- data/spec/fixtures.http/createRegistrantChange/success.http +14 -14
- data/spec/fixtures.http/createSecondaryZone/created.http +20 -20
- data/spec/fixtures.http/createTemplate/created.http +15 -15
- data/spec/fixtures.http/createTemplateRecord/created.http +16 -16
- data/spec/fixtures.http/createWebhook/created.http +13 -13
- data/spec/fixtures.http/createZoneRecord/created-apex.http +13 -13
- data/spec/fixtures.http/createZoneRecord/created.http +13 -13
- data/spec/fixtures.http/deactivateZoneService/success.http +16 -16
- data/spec/fixtures.http/deleteContact/error-contact-in-use.http +15 -15
- data/spec/fixtures.http/deleteContact/success.http +13 -13
- data/spec/fixtures.http/deleteDelegationSignerRecord/success.http +15 -15
- data/spec/fixtures.http/deleteDomain/success.http +11 -11
- data/spec/fixtures.http/deleteEmailForward/success.http +18 -18
- data/spec/fixtures.http/deleteRegistrantChange/success.http +13 -13
- data/spec/fixtures.http/deleteRegistrantChange/success_async.http +3 -3
- data/spec/fixtures.http/deleteTemplate/success.http +13 -13
- data/spec/fixtures.http/deleteTemplateRecord/success.http +13 -13
- data/spec/fixtures.http/deleteWebhook/success.http +13 -13
- data/spec/fixtures.http/deleteZoneRecord/success.http +11 -11
- data/spec/fixtures.http/disableDnssec/not-enabled.http +15 -15
- data/spec/fixtures.http/disableDnssec/success.http +15 -15
- data/spec/fixtures.http/disableDomainAutoRenewal/success.http +13 -13
- data/spec/fixtures.http/disableDomainTransferLock/success.http +17 -17
- data/spec/fixtures.http/disableVanityNameServers/success.http +15 -15
- data/spec/fixtures.http/disableWhoisPrivacy/success.http +16 -16
- data/spec/fixtures.http/dnsAnalytics/success.http +17 -17
- data/spec/fixtures.http/downloadCertificate/success.http +19 -19
- data/spec/fixtures.http/enableDnssec/success.http +17 -17
- data/spec/fixtures.http/enableDomainAutoRenewal/success.http +13 -13
- data/spec/fixtures.http/enableDomainTransferLock/success.http +17 -17
- data/spec/fixtures.http/enableVanityNameServers/success.http +17 -17
- data/spec/fixtures.http/enableWhoisPrivacy/created.http +16 -16
- data/spec/fixtures.http/enableWhoisPrivacy/success.http +16 -16
- data/spec/fixtures.http/getCertificate/success.http +19 -19
- data/spec/fixtures.http/getCertificatePrivateKey/success.http +20 -20
- data/spec/fixtures.http/getContact/success.http +16 -16
- data/spec/fixtures.http/getDelegationSignerRecord/success.http +17 -17
- data/spec/fixtures.http/getDnssec/success.http +17 -17
- data/spec/fixtures.http/getDomain/success.http +19 -19
- data/spec/fixtures.http/getDomainDelegation/success-empty.http +15 -15
- data/spec/fixtures.http/getDomainDelegation/success.http +15 -15
- data/spec/fixtures.http/getDomainPrices/failure.http +18 -18
- data/spec/fixtures.http/getDomainPrices/success.http +21 -21
- data/spec/fixtures.http/getDomainRegistration/success.http +20 -20
- data/spec/fixtures.http/getDomainRenewal/success.http +20 -20
- data/spec/fixtures.http/getDomainRestore/success.http +22 -22
- data/spec/fixtures.http/getDomainTransfer/success.http +19 -19
- data/spec/fixtures.http/getDomainTransferLock/success.http +17 -17
- data/spec/fixtures.http/getEmailForward/success.http +21 -21
- data/spec/fixtures.http/getPrimaryServer/success.http +20 -20
- data/spec/fixtures.http/getRegistrantChange/success.http +15 -15
- data/spec/fixtures.http/getService/success.http +16 -16
- data/spec/fixtures.http/getTemplate/success.http +15 -15
- data/spec/fixtures.http/getTemplateRecord/success.http +16 -16
- data/spec/fixtures.http/getTld/success.http +20 -20
- data/spec/fixtures.http/getTldExtendedAttributes/success-attributes.http +15 -15
- data/spec/fixtures.http/getTldExtendedAttributes/success-noattributes.http +15 -15
- data/spec/fixtures.http/getTldExtendedAttributes/success.http +15 -15
- data/spec/fixtures.http/getWebhook/success.http +13 -13
- data/spec/fixtures.http/getZone/success.http +16 -16
- data/spec/fixtures.http/getZoneFile/success.http +17 -17
- data/spec/fixtures.http/getZoneRecord/success.http +17 -17
- data/spec/fixtures.http/initiatePush/success.http +17 -17
- data/spec/fixtures.http/issueLetsencryptCertificate/success.http +17 -17
- data/spec/fixtures.http/issueRenewalLetsencryptCertificate/success.http +17 -17
- data/spec/fixtures.http/linkPrimaryServer/success.http +20 -20
- data/spec/fixtures.http/listAccounts/success-account.http +20 -20
- data/spec/fixtures.http/listAccounts/success-user.http +20 -20
- data/spec/fixtures.http/listCertificates/success.http +19 -19
- data/spec/fixtures.http/listCharges/fail-400-bad-filter.http +9 -9
- data/spec/fixtures.http/listCharges/fail-403.http +9 -9
- data/spec/fixtures.http/listCharges/success.http +9 -9
- data/spec/fixtures.http/listContacts/success.http +16 -16
- data/spec/fixtures.http/listDelegationSignerRecords/success.http +17 -17
- data/spec/fixtures.http/listDomains/success.http +19 -19
- data/spec/fixtures.http/listEmailForwards/success.http +13 -13
- data/spec/fixtures.http/listPrimaryServers/success.http +20 -20
- data/spec/fixtures.http/listPushes/success.http +17 -17
- data/spec/fixtures.http/listRegistrantChanges/success.http +15 -15
- data/spec/fixtures.http/listServices/success.http +17 -17
- data/spec/fixtures.http/listTemplateRecords/success.http +16 -16
- data/spec/fixtures.http/listTemplates/success.http +15 -15
- data/spec/fixtures.http/listTlds/success.http +20 -20
- data/spec/fixtures.http/listWebhooks/success.http +13 -13
- data/spec/fixtures.http/listZoneRecords/success.http +17 -17
- data/spec/fixtures.http/listZones/success.http +16 -16
- data/spec/fixtures.http/method-not-allowed.http +8 -8
- data/spec/fixtures.http/notfound-certificate.http +12 -12
- data/spec/fixtures.http/notfound-contact.http +10 -10
- data/spec/fixtures.http/notfound-delegationSignerRecord.http +8 -8
- data/spec/fixtures.http/notfound-domain.http +8 -8
- data/spec/fixtures.http/notfound-domainpush.http +8 -8
- data/spec/fixtures.http/notfound-emailforward.http +8 -8
- data/spec/fixtures.http/notfound-record.http +10 -10
- data/spec/fixtures.http/notfound-template.http +10 -10
- data/spec/fixtures.http/notfound-webhook.http +8 -8
- data/spec/fixtures.http/notfound-whoisprivacy.http +10 -10
- data/spec/fixtures.http/notfound-zone.http +10 -10
- data/spec/fixtures.http/oauthAccessToken/error-invalid-request.http +12 -12
- data/spec/fixtures.http/oauthAccessToken/success.http +16 -16
- data/spec/fixtures.http/pages-1of3.http +12 -12
- data/spec/fixtures.http/pages-2of3.http +12 -12
- data/spec/fixtures.http/pages-3of3.http +12 -12
- data/spec/fixtures.http/purchaseLetsencryptCertificate/success.http +19 -19
- data/spec/fixtures.http/purchaseRenewalLetsencryptCertificate/success.http +19 -19
- data/spec/fixtures.http/registerDomain/error-extended-attributes.http +15 -15
- data/spec/fixtures.http/registerDomain/success.http +20 -20
- data/spec/fixtures.http/rejectPush/success.http +15 -15
- data/spec/fixtures.http/renewDomain/error-tooearly.http +14 -14
- data/spec/fixtures.http/renewDomain/success.http +20 -20
- data/spec/fixtures.http/response.http +12 -12
- data/spec/fixtures.http/restoreDomain/success.http +22 -22
- data/spec/fixtures.http/success-with-malformed-json.http +4 -4
- data/spec/fixtures.http/transferDomain/error-indnsimple.http +13 -13
- data/spec/fixtures.http/transferDomain/error-missing-authcode.http +13 -13
- data/spec/fixtures.http/transferDomain/success.http +20 -20
- data/spec/fixtures.http/unapplyService/success.http +15 -15
- data/spec/fixtures.http/unlinkPrimaryServer/success.http +20 -20
- data/spec/fixtures.http/updateContact/success.http +16 -16
- data/spec/fixtures.http/updateTemplate/success.http +15 -15
- data/spec/fixtures.http/updateZoneNsRecords/success.http +16 -16
- data/spec/fixtures.http/updateZoneRecord/success.http +17 -17
- data/spec/fixtures.http/validation-error.http +15 -15
- data/spec/fixtures.http/whoami/success-account.http +15 -15
- data/spec/fixtures.http/whoami/success-user.http +15 -15
- data/spec/fixtures.http/whoami/success.http +15 -15
- data/spec/support/helpers.rb +0 -2
- metadata +7 -13
- data/lib/dnsimple/struct/whois_privacy_renewal.rb +0 -30
- data/spec/fixtures.http/checkDomainPremiumPrice/error_400_not_a_premium_domain.http +0 -18
- data/spec/fixtures.http/checkDomainPremiumPrice/error_400_tld_not_supported.http +0 -18
- data/spec/fixtures.http/checkDomainPremiumPrice/success.http +0 -20
- data/spec/fixtures.http/getDomainPremiumPrice/failure.http +0 -15
- data/spec/fixtures.http/getDomainPremiumPrice/success.http +0 -20
- data/spec/fixtures.http/getWhoisPrivacy/success.http +0 -16
- data/spec/fixtures.http/renewWhoisPrivacy/success.http +0 -20
- data/spec/fixtures.http/renewWhoisPrivacy/whois-privacy-duplicated-order.http +0 -18
- data/spec/fixtures.http/renewWhoisPrivacy/whois-privacy-not-found.http +0 -18
data/lib/dnsimple/struct.rb
CHANGED
|
@@ -3,14 +3,12 @@
|
|
|
3
3
|
module Dnsimple
|
|
4
4
|
module Struct
|
|
5
5
|
class Base
|
|
6
|
-
|
|
7
6
|
def initialize(attributes = {})
|
|
8
7
|
attributes.each do |key, value|
|
|
9
8
|
m = :"#{key}="
|
|
10
9
|
send(m, value) if respond_to?(m)
|
|
11
10
|
end
|
|
12
11
|
end
|
|
13
|
-
|
|
14
12
|
end
|
|
15
13
|
end
|
|
16
14
|
end
|
|
@@ -49,7 +47,6 @@ require_relative "struct/tld"
|
|
|
49
47
|
require_relative "struct/user"
|
|
50
48
|
require_relative "struct/vanity_name_server"
|
|
51
49
|
require_relative "struct/whois_privacy"
|
|
52
|
-
require_relative "struct/whois_privacy_renewal"
|
|
53
50
|
require_relative "struct/zone"
|
|
54
51
|
require_relative "struct/zone_records_batch_change"
|
|
55
52
|
require_relative "struct/zone_record_id"
|
data/lib/dnsimple/version.rb
CHANGED
data/lib/dnsimple.rb
CHANGED
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
module Dnsimple
|
|
4
|
-
|
|
5
4
|
# Echoes a deprecation warning message.
|
|
6
5
|
#
|
|
7
|
-
# @param [String]
|
|
6
|
+
# @param message [String] The message to display.
|
|
8
7
|
# @return [void]
|
|
9
8
|
#
|
|
10
9
|
# @api internal
|
|
@@ -13,7 +12,6 @@ module Dnsimple
|
|
|
13
12
|
message ||= "You are using deprecated behavior which will be removed from the next major or minor release."
|
|
14
13
|
warn("DEPRECATION WARNING: #{message}")
|
|
15
14
|
end
|
|
16
|
-
|
|
17
15
|
end
|
|
18
16
|
|
|
19
17
|
require "dnsimple/version"
|
|
@@ -5,20 +5,22 @@ require "spec_helper"
|
|
|
5
5
|
describe Dnsimple::Client::ClientService do
|
|
6
6
|
|
|
7
7
|
describe "#paginate" do
|
|
8
|
-
service_class = Class.new(Dnsimple::Client::ClientService) do
|
|
9
|
-
Item = Class.new(Dnsimple::Struct::Base) do # rubocop:disable Lint/ConstantDefinitionInBlock
|
|
10
|
-
attr_accessor :id
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def list(account_id, options = {})
|
|
14
|
-
response = client.get(Dnsimple::Client.versioned("/%s/list" % [account_id]), options)
|
|
15
|
-
Dnsimple::PaginatedResponse.new(response, response["data"].map { |r| Item.new(r) })
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
8
|
|
|
19
9
|
subject { service_class.new(Dnsimple::Client.new(base_url: "https://api.example.com/", access_token: "a1b2c3")) }
|
|
20
10
|
|
|
21
11
|
let(:account_id) { 1010 }
|
|
12
|
+
let(:service_class) do
|
|
13
|
+
Class.new(Dnsimple::Client::ClientService) do
|
|
14
|
+
Item = Class.new(Dnsimple::Struct::Base) do # rubocop:disable Lint/ConstantDefinitionInBlock
|
|
15
|
+
attr_accessor :id
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def list(account_id, options = {})
|
|
19
|
+
response = client.get(Dnsimple::Client.versioned("/%s/list" % [account_id]), options)
|
|
20
|
+
Dnsimple::PaginatedResponse.new(response, response["data"].map { |r| Item.new(r) })
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
22
24
|
|
|
23
25
|
before do
|
|
24
26
|
stub_request(:get, %r{/v2/#{account_id}/list\?page=1&per_page=100})
|
|
@@ -19,15 +19,15 @@ describe Dnsimple::Client, ".oauth" do
|
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
it "builds the correct request" do
|
|
22
|
-
subject.exchange_authorization_for_token(code, client_id, client_secret, state:
|
|
22
|
+
subject.exchange_authorization_for_token(code, client_id, client_secret, state:)
|
|
23
23
|
|
|
24
24
|
expect(WebMock).to have_requested(:post, "https://api.dnsimple.test/v2/oauth/access_token")
|
|
25
|
-
.with(body: { client_id
|
|
25
|
+
.with(body: { client_id:, client_secret:, code:, state:, grant_type: "authorization_code" })
|
|
26
26
|
.with(headers: { "Accept" => "application/json" })
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
it "returns oauth token" do
|
|
30
|
-
result = subject.exchange_authorization_for_token(code, client_id, client_secret, state:
|
|
30
|
+
result = subject.exchange_authorization_for_token(code, client_id, client_secret, state:)
|
|
31
31
|
|
|
32
32
|
expect(result).to be_a(Dnsimple::Struct::OauthToken)
|
|
33
33
|
expect(result.access_token).to eq("zKQ7OLqF5N1gylcJweA9WodA000BUNJD")
|
|
@@ -39,10 +39,10 @@ describe Dnsimple::Client, ".oauth" do
|
|
|
39
39
|
let(:redirect_uri) { "super-redirect-uri" }
|
|
40
40
|
|
|
41
41
|
it "builds the correct request" do
|
|
42
|
-
subject.exchange_authorization_for_token(code, client_id, client_secret, state
|
|
42
|
+
subject.exchange_authorization_for_token(code, client_id, client_secret, state:, redirect_uri:)
|
|
43
43
|
|
|
44
44
|
expect(WebMock).to have_requested(:post, "https://api.dnsimple.test/v2/oauth/access_token")
|
|
45
|
-
.with(body: { client_id
|
|
45
|
+
.with(body: { client_id:, client_secret:, code:, state:, redirect_uri:, grant_type: "authorization_code" })
|
|
46
46
|
.with(headers: { "Accept" => "application/json" })
|
|
47
47
|
end
|
|
48
48
|
end
|
|
@@ -55,7 +55,7 @@ describe Dnsimple::Client, ".oauth" do
|
|
|
55
55
|
|
|
56
56
|
it "raises OAuthInvalidRequestError" do
|
|
57
57
|
expect {
|
|
58
|
-
subject.exchange_authorization_for_token(code, client_id, client_secret, state:
|
|
58
|
+
subject.exchange_authorization_for_token(code, client_id, client_secret, state:)
|
|
59
59
|
}.to raise_error(Dnsimple::OAuthInvalidRequestError) do |e|
|
|
60
60
|
error = "invalid_request"
|
|
61
61
|
error_description = "Invalid \"state\": value doesn't match the \"state\" in the authorization request"
|
|
@@ -7,33 +7,6 @@ describe Dnsimple::Client, ".registrar" do
|
|
|
7
7
|
subject { described_class.new(base_url: "https://api.dnsimple.test", access_token: "a1b2c3").registrar }
|
|
8
8
|
|
|
9
9
|
|
|
10
|
-
describe "#whois_privacy" do
|
|
11
|
-
let(:account_id) { 1010 }
|
|
12
|
-
|
|
13
|
-
before do
|
|
14
|
-
stub_request(:get, %r{/v2/#{account_id}/registrar/domains/.+/whois_privacy$})
|
|
15
|
-
.to_return(read_http_fixture("getWhoisPrivacy/success.http"))
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
it "builds the correct request" do
|
|
19
|
-
subject.whois_privacy(account_id, domain_name = "example.com")
|
|
20
|
-
|
|
21
|
-
expect(WebMock).to have_requested(:get, "https://api.dnsimple.test/v2/#{account_id}/registrar/domains/#{domain_name}/whois_privacy")
|
|
22
|
-
.with(headers: { "Accept" => "application/json" })
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it "returns the whois privacy" do
|
|
26
|
-
response = subject.whois_privacy(account_id, "example.com")
|
|
27
|
-
expect(response).to be_a(Dnsimple::Response)
|
|
28
|
-
|
|
29
|
-
result = response.data
|
|
30
|
-
expect(result).to be_a(Dnsimple::Struct::WhoisPrivacy)
|
|
31
|
-
expect(result.domain_id).to be_a(Integer)
|
|
32
|
-
expect(result.enabled).to be(true)
|
|
33
|
-
expect(result.expires_on).to be_a(String)
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
|
|
37
10
|
describe "#enable_whois_privacy" do
|
|
38
11
|
let(:account_id) { 1010 }
|
|
39
12
|
|
|
@@ -118,59 +91,4 @@ describe Dnsimple::Client, ".registrar" do
|
|
|
118
91
|
end
|
|
119
92
|
end
|
|
120
93
|
|
|
121
|
-
|
|
122
|
-
describe "#renew_whois_privacy" do
|
|
123
|
-
let(:account_id) { 1010 }
|
|
124
|
-
|
|
125
|
-
before do
|
|
126
|
-
stub_request(:post, %r{/v2/#{account_id}/registrar/domains/.+/whois_privacy/renewals$})
|
|
127
|
-
.to_return(read_http_fixture("renewWhoisPrivacy/success.http"))
|
|
128
|
-
end
|
|
129
|
-
|
|
130
|
-
it "builds the correct request" do
|
|
131
|
-
subject.renew_whois_privacy(account_id, domain_name = "example.com")
|
|
132
|
-
|
|
133
|
-
expect(WebMock).to have_requested(:post, "https://api.dnsimple.test/v2/#{account_id}/registrar/domains/#{domain_name}/whois_privacy/renewals")
|
|
134
|
-
.with(headers: { "Accept" => "application/json" })
|
|
135
|
-
end
|
|
136
|
-
|
|
137
|
-
it "returns the whois privacy order" do
|
|
138
|
-
response = subject.renew_whois_privacy(account_id, "example.com")
|
|
139
|
-
expect(response).to be_a(Dnsimple::Response)
|
|
140
|
-
|
|
141
|
-
result = response.data
|
|
142
|
-
expect(result).to be_a(Dnsimple::Struct::WhoisPrivacyRenewal)
|
|
143
|
-
expect(result.domain_id).to be_a(Integer)
|
|
144
|
-
expect(result.whois_privacy_id).to be_a(Integer)
|
|
145
|
-
expect(result.enabled).to be(true)
|
|
146
|
-
expect(result.expires_on).to be_a(String)
|
|
147
|
-
end
|
|
148
|
-
|
|
149
|
-
context "when whois privacy was't previously purchased" do
|
|
150
|
-
before do
|
|
151
|
-
stub_request(:post, %r{/v2/#{account_id}/registrar/domains/.+/whois_privacy/renewals$})
|
|
152
|
-
.to_return(read_http_fixture("renewWhoisPrivacy/whois-privacy-not-found.http"))
|
|
153
|
-
end
|
|
154
|
-
|
|
155
|
-
it "raises error" do
|
|
156
|
-
expect do
|
|
157
|
-
subject.renew_whois_privacy(account_id, "example.com")
|
|
158
|
-
end.to raise_error(Dnsimple::RequestError, "WHOIS privacy not found for example.com")
|
|
159
|
-
end
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
context "when there is already a whois privacy renewal order in progress" do
|
|
163
|
-
before do
|
|
164
|
-
stub_request(:post, %r{/v2/#{account_id}/registrar/domains/.+/whois_privacy/renewals$})
|
|
165
|
-
.to_return(read_http_fixture("renewWhoisPrivacy/whois-privacy-duplicated-order.http"))
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
it "raises error" do
|
|
169
|
-
expect do
|
|
170
|
-
subject.renew_whois_privacy(account_id, "example.com")
|
|
171
|
-
end.to raise_error(Dnsimple::RequestError, "The whois privacy for example.com has just been renewed, a new renewal cannot be started at this time")
|
|
172
|
-
end
|
|
173
|
-
end
|
|
174
|
-
end
|
|
175
|
-
|
|
176
94
|
end
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
HTTP/1.1 204 No Content
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
2
|
+
server: nginx
|
|
3
|
+
date: Thu, 11 Aug 2016 10:23:46 GMT
|
|
4
|
+
connection: keep-alive
|
|
5
|
+
x-ratelimit-limit: 2400
|
|
6
|
+
x-ratelimit-remaining: 2392
|
|
7
|
+
x-ratelimit-reset: 1470913058
|
|
8
|
+
cache-control: no-cache
|
|
9
|
+
x-request-id: 5867ab50-6237-4cf8-b220-51f5ef57debd
|
|
10
|
+
x-runtime: 0.582482
|
|
11
|
+
x-content-type-options: nosniff
|
|
12
|
+
x-download-options: noopen
|
|
13
|
+
x-frame-options: DENY
|
|
14
|
+
x-permitted-cross-domain-policies: none
|
|
15
|
+
x-xss-protection: 1; mode=block
|
|
16
|
+
strict-transport-security: max-age=31536000
|
|
17
17
|
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
HTTP/1.1 200 OK
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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"}]}
|
|
1
|
+
HTTP/1.1 200 OK
|
|
2
|
+
server: nginx
|
|
3
|
+
date: Tue, 14 Jun 2016 12:02:58 GMT
|
|
4
|
+
content-type: application/json; charset=utf-8
|
|
5
|
+
connection: keep-alive
|
|
6
|
+
x-ratelimit-limit: 2400
|
|
7
|
+
x-ratelimit-remaining: 2391
|
|
8
|
+
x-ratelimit-reset: 1465908577
|
|
9
|
+
etag: W/"9ef3b4bf1f441a9b1cd6d7041bc181aa"
|
|
10
|
+
cache-control: max-age=0, private, must-revalidate
|
|
11
|
+
x-request-id: f705b65b-3589-43ad-97ca-3b2821d49d81
|
|
12
|
+
x-runtime: 0.012661
|
|
13
|
+
x-content-type-options: nosniff
|
|
14
|
+
x-download-options: noopen
|
|
15
|
+
x-frame-options: DENY
|
|
16
|
+
x-permitted-cross-domain-policies: none
|
|
17
|
+
x-xss-protection: 1; mode=block
|
|
18
|
+
strict-transport-security: max-age=31536000
|
|
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"}]}
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
HTTP/1.1 200 OK
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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":"teams-v1-monthly","created_at":"2012-03-16T16:02:54Z","updated_at":"2016-06-14T11:23:16Z"}]}
|
|
21
|
-
|
|
1
|
+
HTTP/1.1 200 OK
|
|
2
|
+
server: nginx
|
|
3
|
+
date: Tue, 14 Jun 2016 12:05:38 GMT
|
|
4
|
+
content-type: application/json; charset=utf-8
|
|
5
|
+
connection: keep-alive
|
|
6
|
+
x-ratelimit-limit: 2400
|
|
7
|
+
x-ratelimit-remaining: 2390
|
|
8
|
+
x-ratelimit-reset: 1465908577
|
|
9
|
+
etag: W/"b8dc5b6e94652da599d15d4668b723b5"
|
|
10
|
+
cache-control: max-age=0, private, must-revalidate
|
|
11
|
+
x-request-id: 745455ba-3871-440d-b703-1448b9708c14
|
|
12
|
+
x-runtime: 0.014727
|
|
13
|
+
x-content-type-options: nosniff
|
|
14
|
+
x-download-options: noopen
|
|
15
|
+
x-frame-options: DENY
|
|
16
|
+
x-permitted-cross-domain-policies: none
|
|
17
|
+
x-xss-protection: 1; mode=block
|
|
18
|
+
strict-transport-security: max-age=31536000
|
|
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":"teams-v1-monthly","created_at":"2012-03-16T16:02:54Z","updated_at":"2016-06-14T11:23:16Z"}]}
|
|
21
|
+
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
HTTP/1.1 200 OK
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
{"data":{"id":1,"account_id":1010,"name":"example.com","reverse":false,"secondary":false,"last_transferred_at":null,"active":true,"created_at":"2022-09-28T04:45:24Z","updated_at":"2023-07-06T11:19:48Z"}}
|
|
1
|
+
HTTP/1.1 200 OK
|
|
2
|
+
server: nginx
|
|
3
|
+
date: Tue, 08 Aug 2023 04:19:23 GMT
|
|
4
|
+
content-type: application/json; charset=utf-8
|
|
5
|
+
connection: keep-alive
|
|
6
|
+
x-ratelimit-limit: 2400
|
|
7
|
+
x-ratelimit-remaining: 2399
|
|
8
|
+
x-ratelimit-reset: 1691471963
|
|
9
|
+
x-work-with-us: Love automation? So do we! https://dnsimple.com/jobs
|
|
10
|
+
etag: W/"fe6afd982459be33146933235343d51d"
|
|
11
|
+
cache-control: max-age=0, private, must-revalidate
|
|
12
|
+
x-request-id: 8e8ac535-9f46-4304-8440-8c68c30427c3
|
|
13
|
+
x-runtime: 0.176579
|
|
14
|
+
strict-transport-security: max-age=63072000
|
|
15
|
+
|
|
16
|
+
{"data":{"id":1,"account_id":1010,"name":"example.com","reverse":false,"secondary":false,"last_transferred_at":null,"active":true,"created_at":"2022-09-28T04:45:24Z","updated_at":"2023-07-06T11:19:48Z"}}
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
HTTP/1.1 200 OK
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
1
|
+
HTTP/1.1 200 OK
|
|
2
|
+
server: nginx
|
|
3
|
+
date: Wed, 15 Jun 2016 11:09:44 GMT
|
|
4
|
+
content-type: application/json; charset=utf-8
|
|
5
|
+
connection: keep-alive
|
|
6
|
+
x-ratelimit-limit: 2400
|
|
7
|
+
x-ratelimit-remaining: 2398
|
|
8
|
+
x-ratelimit-reset: 1465992405
|
|
9
|
+
etag: W/"f3fb525524e0a0eab452025850afb062"
|
|
10
|
+
cache-control: max-age=0, private, must-revalidate
|
|
11
|
+
x-request-id: 03bcc2ff-d1f1-4fc2-bb3f-9218a21c04b7
|
|
12
|
+
x-runtime: 0.065526
|
|
13
|
+
x-content-type-options: nosniff
|
|
14
|
+
x-download-options: noopen
|
|
15
|
+
x-frame-options: DENY
|
|
16
|
+
x-permitted-cross-domain-policies: none
|
|
17
|
+
x-xss-protection: 1; mode=block
|
|
18
|
+
strict-transport-security: max-age=31536000
|
|
19
|
+
|
|
20
20
|
{"data":[{"id":1,"name":"WordPress","sid":"wordpress","description":"Share with the world, your community, or your closest friends.","setup_description":null,"requires_setup":true,"default_subdomain":"blog","created_at":"2013-11-05T18:06:50Z","updated_at":"2016-03-04T09:23:27Z","settings":[{"name":"site","label":"Site","append":null,"description":"Your Wordpress.com subdomain","example":null,"password":false}]}],"pagination":{"current_page":1,"per_page":30,"total_entries":1,"total_pages":1}}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
HTTP/1.1 204 No Content
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
2
|
+
server: nginx
|
|
3
|
+
date: Sat, 09 Jul 2016 11:12:42 GMT
|
|
4
|
+
connection: keep-alive
|
|
5
|
+
x-ratelimit-limit: 2400
|
|
6
|
+
x-ratelimit-remaining: 2398
|
|
7
|
+
x-ratelimit-reset: 1468066326
|
|
8
|
+
cache-control: no-cache
|
|
9
|
+
x-request-id: 30a3a44b-5792-4114-a355-a866603311ce
|
|
10
|
+
x-runtime: 0.087254
|
|
11
|
+
x-content-type-options: nosniff
|
|
12
|
+
x-download-options: noopen
|
|
13
|
+
x-frame-options: DENY
|
|
14
|
+
x-permitted-cross-domain-policies: none
|
|
15
|
+
x-xss-protection: 1; mode=block
|
|
16
|
+
strict-transport-security: max-age=31536000
|
|
17
17
|
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
HTTP/1.1 204 No Content
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
HTTP/1.1 204 No Content
|
|
2
|
+
server: nginx
|
|
3
|
+
date: Thu, 24 Mar 2016 11:05:38 GMT
|
|
4
|
+
connection: keep-alive
|
|
5
|
+
status: 204 No Content
|
|
6
|
+
x-ratelimit-limit: 2400
|
|
7
|
+
x-ratelimit-remaining: 2397
|
|
8
|
+
x-ratelimit-reset: 1458821049
|
|
9
|
+
cache-control: no-cache
|
|
10
|
+
x-request-id: 967713d5-a203-40ee-875c-1df07868b7eb
|
|
11
|
+
x-runtime: 0.147576
|
|
12
|
+
strict-transport-security: max-age=31536000
|
|
13
|
+
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
HTTP/1.1 204 No Content
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
1
|
+
HTTP/1.1 204 No Content
|
|
2
|
+
server: nginx
|
|
3
|
+
date: Sun, 21 Feb 2016 13:40:35 GMT
|
|
4
|
+
connection: keep-alive
|
|
5
|
+
status: 204 No Content
|
|
6
|
+
x-ratelimit-limit: 4000
|
|
7
|
+
x-ratelimit-remaining: 3990
|
|
8
|
+
x-ratelimit-reset: 1456063540
|
|
9
|
+
cache-control: no-cache
|
|
10
|
+
x-request-id: 9af6ab78-7ea8-4675-89f0-14d124fc7ca2
|
|
11
|
+
x-runtime: 3.038699
|
|
12
|
+
strict-transport-security: max-age=31536000
|
|
13
|
+
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
HTTP/1.1 502 Bad Gateway
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
2
|
+
server: nginx
|
|
3
|
+
date: Mon, 22 Dec 2014 14:16:12 GMT
|
|
4
|
+
content-type: text/html
|
|
5
|
+
content-length: 166
|
|
6
|
+
connection: close
|
|
7
7
|
|
|
8
8
|
<html>
|
|
9
9
|
<head><title>502 Bad Gateway</title></head>
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
HTTP/1.1 400 Bad Request
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
{"message":"Validation failed","errors":{"creates":[{"index":0,"message":"Validation failed","errors":{"record_type":["unsupported"]}}]}}
|
|
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"]}}]}}
|
|
@@ -3,9 +3,9 @@ server: nginx
|
|
|
3
3
|
date: Fri, 05 Sep 2025 06:50:48 GMT
|
|
4
4
|
content-type: application/json; charset=utf-8
|
|
5
5
|
content-length: 107
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
x-ratelimit-limit: 2400
|
|
7
|
+
x-ratelimit-remaining: 2390
|
|
8
|
+
x-ratelimit-reset: 1757058040
|
|
9
9
|
x-work-with-us: Love automation? So do we! https://dnsimple.com/jobs
|
|
10
10
|
cache-control: no-cache
|
|
11
11
|
x-request-id: 254988cd-401b-4a32-b5d8-c25502573c9a
|
|
@@ -3,9 +3,9 @@ server: nginx
|
|
|
3
3
|
date: Fri, 05 Sep 2025 06:52:30 GMT
|
|
4
4
|
content-type: application/json; charset=utf-8
|
|
5
5
|
content-length: 107
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
x-ratelimit-limit: 2400
|
|
7
|
+
x-ratelimit-remaining: 2388
|
|
8
|
+
x-ratelimit-reset: 1757058040
|
|
9
9
|
x-work-with-us: Love automation? So do we! https://dnsimple.com/jobs
|
|
10
10
|
cache-control: no-cache
|
|
11
11
|
x-request-id: e042a192-69de-46b5-9ea0-add647a9b20a
|
|
@@ -1,16 +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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
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}]}}
|
|
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}]}}
|