├── .github ├── CODEOWNERS ├── dependabot.yml └── workflows │ ├── auto-merge.yml │ ├── ci.yml │ └── release.yml ├── .gitignore ├── .markdownlint.yaml ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE.txt ├── MANIFEST.in ├── Makefile ├── README.md ├── dnsimple ├── __init__.py ├── client.py ├── exceptions.py ├── extra.py ├── response.py ├── service │ ├── __init__.py │ ├── accounts.py │ ├── billing.py │ ├── certificates.py │ ├── contacts.py │ ├── dns_analytics.py │ ├── domains.py │ ├── identity.py │ ├── oauth.py │ ├── registrar.py │ ├── services.py │ ├── templates.py │ ├── tlds.py │ ├── vanity_name_servers.py │ ├── webhooks.py │ └── zones.py ├── struct │ ├── __init__.py │ ├── access_token.py │ ├── account.py │ ├── certificate.py │ ├── charge.py │ ├── collaborator.py │ ├── contact.py │ ├── delegation_signer_record.py │ ├── dns_analytics.py │ ├── dnssec.py │ ├── domain.py │ ├── domain_check.py │ ├── domain_premium_price.py │ ├── domain_price.py │ ├── domain_push.py │ ├── domain_registration.py │ ├── domain_renewal.py │ ├── domain_restore.py │ ├── domain_transfer.py │ ├── domain_transfer_lock.py │ ├── email_forward.py │ ├── registrant.py │ ├── service.py │ ├── struct.py │ ├── template.py │ ├── template_record.py │ ├── tld.py │ ├── user.py │ ├── vanity_name_server.py │ ├── webhook.py │ ├── whoami.py │ ├── whois_privacy.py │ ├── zone.py │ ├── zone_distribution.py │ ├── zone_file.py │ └── zone_record.py ├── token_authentication.py └── version.py ├── poetry.toml ├── pyproject.toml └── tests ├── __init__.py ├── client_test.py ├── exception_test.py ├── fixtures └── v2 │ ├── api │ ├── acceptPush │ │ └── success.http │ ├── accounts │ │ ├── success-account.http │ │ └── success-user.http │ ├── activateZoneService │ │ └── success.http │ ├── addCollaborator │ │ ├── invite-success.http │ │ └── success.http │ ├── appliedServices │ │ └── success.http │ ├── applyService │ │ └── success.http │ ├── applyTemplate │ │ └── success.http │ ├── authorizeDomainTransferOut │ │ └── success.http │ ├── badgateway.http │ ├── cancelDomainTransfer │ │ └── success.http │ ├── changeDomainDelegation │ │ └── success.http │ ├── changeDomainDelegationFromVanity │ │ └── success.http │ ├── changeDomainDelegationToVanity │ │ └── success.http │ ├── checkDomain │ │ └── success.http │ ├── checkDomainPremiumPrice │ │ ├── error_400_not_a_premium_domain.http │ │ ├── error_400_tld_not_supported.http │ │ └── success.http │ ├── checkRegistrantChange │ │ └── success.http │ ├── checkZoneDistribution │ │ ├── error.http │ │ ├── failure.http │ │ └── success.http │ ├── checkZoneRecordDistribution │ │ ├── error.http │ │ ├── failure.http │ │ └── success.http │ ├── createContact │ │ └── created.http │ ├── createDelegationSignerRecord │ │ ├── created.http │ │ └── validation-error.http │ ├── createDomain │ │ └── created.http │ ├── createEmailForward │ │ └── created.http │ ├── createPrimaryServer │ │ └── created.http │ ├── createRegistrantChange │ │ └── success.http │ ├── createSecondaryZone │ │ └── created.http │ ├── createTemplate │ │ └── created.http │ ├── createTemplateRecord │ │ └── created.http │ ├── createWebhook │ │ └── created.http │ ├── createZoneRecord │ │ ├── created-apex.http │ │ └── created.http │ ├── deactivateZoneService │ │ └── success.http │ ├── deleteContact │ │ ├── error-contact-in-use.http │ │ └── success.http │ ├── deleteDelegationSignerRecord │ │ └── success.http │ ├── deleteDomain │ │ └── success.http │ ├── deleteEmailForward │ │ └── success.http │ ├── deleteRegistrantChange │ │ └── success.http │ ├── deleteTemplate │ │ └── success.http │ ├── deleteTemplateRecord │ │ └── success.http │ ├── deleteWebhook │ │ └── success.http │ ├── deleteZoneRecord │ │ └── success.http │ ├── disableDnssec │ │ ├── not-enabled.http │ │ └── success.http │ ├── disableDomainAutoRenewal │ │ └── success.http │ ├── disableDomainTransferLock │ │ └── success.http │ ├── disableVanityNameServers │ │ └── success.http │ ├── disableWhoisPrivacy │ │ └── success.http │ ├── dnsAnalytics │ │ └── success.http │ ├── downloadCertificate │ │ └── success.http │ ├── enableDnssec │ │ └── success.http │ ├── enableDomainAutoRenewal │ │ └── success.http │ ├── enableDomainTransferLock │ │ └── success.http │ ├── enableVanityNameServers │ │ └── success.http │ ├── enableWhoisPrivacy │ │ ├── created.http │ │ └── success.http │ ├── getCertificate │ │ └── success.http │ ├── getCertificatePrivateKey │ │ └── success.http │ ├── getContact │ │ └── success.http │ ├── getDelegationSignerRecord │ │ └── success.http │ ├── getDnssec │ │ └── success.http │ ├── getDomain │ │ └── success.http │ ├── getDomainDelegation │ │ ├── success-empty.http │ │ └── success.http │ ├── getDomainPremiumPrice │ │ ├── failure.http │ │ └── success.http │ ├── getDomainPrices │ │ ├── failure.http │ │ └── success.http │ ├── getDomainRegistration │ │ └── success.http │ ├── getDomainRenewal │ │ └── success.http │ ├── getDomainRestore │ │ └── success.http │ ├── getDomainTransfer │ │ └── success.http │ ├── getDomainTransferLock │ │ └── success.http │ ├── getEmailForward │ │ └── success.http │ ├── getPrimaryServer │ │ └── success.http │ ├── getRegistrantChange │ │ └── success.http │ ├── getService │ │ └── success.http │ ├── getTemplate │ │ └── success.http │ ├── getTemplateRecord │ │ └── success.http │ ├── getTld │ │ └── success.http │ ├── getTldExtendedAttributes │ │ ├── success-attributes.http │ │ ├── success-noattributes.http │ │ └── success.http │ ├── getWebhook │ │ └── success.http │ ├── getWhoisPrivacy │ │ └── success.http │ ├── getZone │ │ └── success.http │ ├── getZoneFile │ │ └── success.http │ ├── getZoneRecord │ │ └── success.http │ ├── initiatePush │ │ └── success.http │ ├── issueLetsencryptCertificate │ │ └── success.http │ ├── issueRenewalLetsencryptCertificate │ │ └── success.http │ ├── linkPrimaryServer │ │ └── success.http │ ├── listAccounts │ │ ├── success-account.http │ │ └── success-user.http │ ├── listCertificates │ │ └── success.http │ ├── listCharges │ │ ├── fail-400-bad-filter.http │ │ ├── fail-403.http │ │ └── success.http │ ├── listCollaborators │ │ └── success.http │ ├── listContacts │ │ └── success.http │ ├── listDelegationSignerRecords │ │ └── success.http │ ├── listDomains │ │ └── success.http │ ├── listEmailForwards │ │ └── success.http │ ├── listPrimaryServers │ │ └── success.http │ ├── listPushes │ │ └── success.http │ ├── listRegistrantChanges │ │ └── success.http │ ├── listServices │ │ └── success.http │ ├── listTemplateRecords │ │ └── success.http │ ├── listTemplates │ │ └── success.http │ ├── listTlds │ │ └── success.http │ ├── listWebhooks │ │ └── success.http │ ├── listZoneRecords │ │ └── success.http │ ├── listZones │ │ └── success.http │ ├── method-not-allowed.http │ ├── notfound-certificate.http │ ├── notfound-collaborator.http │ ├── notfound-contact.http │ ├── notfound-delegationSignerRecord.http │ ├── notfound-domain.http │ ├── notfound-domainpush.http │ ├── notfound-emailforward.http │ ├── notfound-record.http │ ├── notfound-template.http │ ├── notfound-webhook.http │ ├── notfound-whoisprivacy.http │ ├── notfound-zone.http │ ├── oauthAccessToken │ │ ├── error-invalid-request.http │ │ └── success.http │ ├── pages-1of3.http │ ├── pages-2of3.http │ ├── pages-3of3.http │ ├── purchaseLetsencryptCertificate │ │ └── success.http │ ├── purchaseRenewalLetsencryptCertificate │ │ └── success.http │ ├── registerDomain │ │ └── success.http │ ├── rejectPush │ │ └── success.http │ ├── removeCollaborator │ │ └── success.http │ ├── renewDomain │ │ ├── error-tooearly.http │ │ └── success.http │ ├── renewWhoisPrivacy │ │ ├── success.http │ │ ├── whois-privacy-duplicated-order.http │ │ └── whois-privacy-not-found.http │ ├── resetDomainToken │ │ └── success.http │ ├── response.http │ ├── restoreDomain │ │ └── success.http │ ├── success-with-malformed-json.http │ ├── transferDomain │ │ ├── error-indnsimple.http │ │ ├── error-missing-authcode.http │ │ └── success.http │ ├── unapplyService │ │ └── success.http │ ├── unlinkPrimaryServer │ │ └── success.http │ ├── updateContact │ │ └── success.http │ ├── updateTemplate │ │ └── success.http │ ├── updateZoneRecord │ │ └── success.http │ ├── validation-error.http │ └── whoami │ │ ├── success-account.http │ │ ├── success-user.http │ │ └── success.http │ └── webhooks │ ├── account.billing_settings_update │ └── example.http │ ├── account.remove_user │ └── example.http │ ├── account.update │ └── example.http │ ├── account.user_invitation_accept │ └── example.http │ ├── account.user_invitation_revoke │ └── example.http │ ├── account.user_invite │ └── example.http │ ├── account.user_remove │ └── example.http │ ├── account_invitation.accept │ └── example.http │ ├── account_invitation.create │ └── example.http │ ├── certificate.issue │ └── example.http │ ├── certificate.remove_private_key │ └── example.http │ ├── contact.create │ └── example.http │ ├── contact.delete │ └── example.http │ ├── contact.update │ └── example.http │ ├── dnssec.create │ └── example.http │ ├── dnssec.delete │ └── example.http │ ├── dnssec.rotation_complete │ └── example.http │ ├── dnssec.rotation_start │ └── example.http │ ├── domain.auto_renewal_disable │ └── example.http │ ├── domain.auto_renewal_enable │ └── example.http │ ├── domain.create │ └── example.http │ ├── domain.delegation_change │ └── example.http │ ├── domain.delete │ └── example.http │ ├── domain.register │ ├── example.http │ └── status-started.http │ ├── domain.registrant_change │ └── example.http │ ├── domain.renew │ └── example.http │ ├── domain.resolution_disable │ └── example.http │ ├── domain.resolution_enable │ └── example.http │ ├── email_forward.create │ └── example.http │ ├── email_forward.delete │ └── example.http │ ├── email_forward.update │ └── example.http │ ├── subscription.renew │ └── state-failed.http │ ├── webhook.create │ └── example.http │ ├── webhook.delete │ └── example.http │ ├── whois_privacy.disable │ └── example.http │ ├── whois_privacy.enable │ └── example.http │ ├── whois_privacy.purchase │ └── example.http │ ├── whois_privacy.renew │ └── example.http │ ├── zone.create │ └── example.http │ ├── zone.delete │ └── example.http │ ├── zone_record.create │ └── example.http │ ├── zone_record.delete │ └── example.http │ └── zone_record.update │ └── example.http ├── helpers.py ├── response_test.py └── service ├── __init__.py ├── accounts_test.py ├── billing_test.py ├── certificates_test.py ├── contacts_test.py ├── dns_analytics_test.py ├── domains_delegation_signer_records_test.py ├── domains_dnssec_test.py ├── domains_email_forwards_test.py ├── domains_pushes_test.py ├── domains_test.py ├── identity_test.py ├── oauth_test.py ├── registrar_auto_renewal_test.py ├── registrar_delegation_test.py ├── registrar_domain_transfer_lock_test.py ├── registrar_registrant_test.py ├── registrar_test.py ├── registrar_whois_privacy_test.py ├── services_domains_test.py ├── services_test.py ├── template_domains_test.py ├── template_records_test.py ├── templates_test.py ├── tlds_test.py ├── vanity_name_servers_test.py ├── webhooks_test.py ├── zone_records_test.py └── zones_test.py /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @dnsimple/external-integrations 2 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | --- 2 | version: 2 3 | updates: 4 | - package-ecosystem: pip 5 | directory: / 6 | schedule: 7 | interval: monthly 8 | open-pull-requests-limit: 10 9 | labels: 10 | - task 11 | - dependencies 12 | 13 | - package-ecosystem: "github-actions" 14 | directory: "/" 15 | schedule: 16 | interval: "daily" 17 | time: '12:00' 18 | open-pull-requests-limit: 10 19 | labels: 20 | - task 21 | - dependencies 22 | - automerge 23 | -------------------------------------------------------------------------------- /.github/workflows/auto-merge.yml: -------------------------------------------------------------------------------- 1 | name: Auto-merge 2 | 3 | on: 4 | pull_request: 5 | types: 6 | - labeled 7 | - synchronize 8 | - opened 9 | 10 | jobs: 11 | auto-merge: 12 | name: 'Auto-merge' 13 | runs-on: ubuntu-latest 14 | permissions: write-all 15 | 16 | if: github.event.pull_request.user.login == 'dependabot[bot]' && contains(github.event.pull_request.labels.*.name, 'automerge') 17 | steps: 18 | - name: Wait for tests to succeed 19 | uses: lewagon/wait-on-check-action@v1.3.4 20 | timeout-minutes: 15 21 | with: 22 | ref: ${{ github.ref }} 23 | running-workflow-name: 'Auto-merge' 24 | repo-token: ${{ secrets.GITHUB_TOKEN }} 25 | wait-interval: 10 26 | allowed-conclusions: success 27 | - uses: juliangruber/merge-pull-request-action@v1 28 | with: 29 | github-token: "${{ secrets.GITHUB_TOKEN }}" 30 | number: ${{ github.event.number }} 31 | method: squash 32 | repo: dnsimple/dnsimple-python 33 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: [ main ] 6 | pull_request: 7 | workflow_dispatch: 8 | 9 | concurrency: 10 | group: ${{ github.workflow }}-${{ github.ref }} 11 | cancel-in-progress: true 12 | 13 | jobs: 14 | markdownlint-cli: 15 | name: Lint markdown 16 | runs-on: ubuntu-latest 17 | steps: 18 | - name: Checkout Code 19 | uses: actions/checkout@v4 20 | - name: Run markdownlint-cli 21 | uses: nosborn/github-action-markdown-cli@v3.4.0 22 | with: 23 | files: . 24 | config_file: ".markdownlint.yaml" 25 | 26 | test: 27 | runs-on: ubuntu-latest 28 | name: Python ${{ matrix.python-version }} 29 | needs: 30 | - markdownlint-cli 31 | strategy: 32 | matrix: 33 | python-version: 34 | - '3.12' 35 | - '3.13' 36 | steps: 37 | - uses: actions/checkout@v4 38 | - name: Set up Python 39 | uses: actions/setup-python@v5 40 | with: 41 | python-version: ${{ matrix.python-version }} 42 | - name: Set up Poetry 43 | uses: abatilo/actions-poetry@v4 44 | with: 45 | poetry-version: '1.4.1' 46 | - run: make test 47 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release 2 | 3 | on: 4 | push: 5 | tags: 6 | - v*.*.* 7 | 8 | jobs: 9 | publish: 10 | name: Publish to PyPI 11 | runs-on: ubuntu-22.04 12 | steps: 13 | - name: Wait for tests to succeed 14 | uses: lewagon/wait-on-check-action@v1.3.4 15 | timeout-minutes: 15 16 | with: 17 | ref: 'refs/heads/main' 18 | running-workflow-name: 'Publish to PyPI' 19 | repo-token: ${{ secrets.GITHUB_TOKEN }} 20 | wait-interval: 10 21 | allowed-conclusions: success 22 | 23 | - uses: actions/checkout@v4 24 | 25 | - name: Set up Python 26 | uses: actions/setup-python@v5 27 | with: 28 | python-version: '3.13' 29 | 30 | - name: Set up Poetry 31 | uses: abatilo/actions-poetry@v4 32 | with: 33 | poetry-version: '1.4.1' 34 | 35 | - name: Install dependencies 36 | run: poetry install --without test 37 | 38 | - name: Publish distribution to PyPI 39 | run: poetry publish --build -u __token__ -p '${{ secrets.PYPI_API_TOKEN }}' 40 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /venv/ 2 | **/*.pyc 3 | 4 | /build 5 | /dist 6 | *.egg-info 7 | 8 | /poetry.lock 9 | 10 | .tool-versions 11 | -------------------------------------------------------------------------------- /.markdownlint.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | default: true 3 | line-length: false 4 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2025 DNSimple Corporation 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include LICENSE.txt -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | install_requirements: 2 | poetry install 3 | 4 | test: install_requirements 5 | poetry run python -m unittest discover -p "*_test.py" -v 6 | 7 | clean_package: 8 | rm -rf dist/* 9 | 10 | package: 11 | poetry build 12 | 13 | test_upload_package: clean_package package 14 | poetry publish --repository testpypi 15 | -------------------------------------------------------------------------------- /dnsimple/__init__.py: -------------------------------------------------------------------------------- 1 | from dnsimple.exceptions import DNSimpleException 2 | from dnsimple.client import Client 3 | -------------------------------------------------------------------------------- /dnsimple/exceptions.py: -------------------------------------------------------------------------------- 1 | import warnings 2 | 3 | class DNSimpleException(Exception): 4 | """ 5 | Root Exception raised for errors in the client. 6 | 7 | :param message: str 8 | The raw response from the server 9 | :param attribute_errors: dict 10 | A dict of attribute error 11 | :param http_response: requests.Response 12 | HTTP response object 13 | """ 14 | 15 | def __init__(self, message=None, attribute_errors=None, http_response=None): 16 | self.message = message 17 | self.attribute_errors = attribute_errors 18 | self.status = None 19 | self.reason = None 20 | self.response = None 21 | 22 | if http_response is not None: 23 | self.reason = http_response.reason 24 | self.status = http_response.status_code 25 | self.response = http_response 26 | 27 | def __str__(self): 28 | """Custom error messages for exception""" 29 | error_message = "({0})\n"\ 30 | "Reason: {1}\n".format(self.status, self.reason) 31 | 32 | if self.response is not None: 33 | error_message += "HTTP response body: {0}\n".format(self.response.text) 34 | 35 | return error_message 36 | 37 | @property 38 | def errors(self): 39 | """Return the attribute errors""" 40 | warnings.warn("DEPRECATION WARNING: errors is deprecated, use attribute_errors instead.") 41 | return self.attribute_errors 42 | -------------------------------------------------------------------------------- /dnsimple/service/__init__.py: -------------------------------------------------------------------------------- 1 | from dnsimple.service.accounts import Accounts 2 | from dnsimple.service.billing import Billing 3 | from dnsimple.service.certificates import Certificates 4 | from dnsimple.service.contacts import Contacts 5 | from dnsimple.service.domains import Domains 6 | from dnsimple.service.dns_analytics import DnsAnalytics 7 | from dnsimple.service.identity import Identity 8 | from dnsimple.service.oauth import Oauth 9 | from dnsimple.service.registrar import Registrar 10 | from dnsimple.service.services import Services 11 | from dnsimple.service.templates import Templates 12 | from dnsimple.service.tlds import Tlds 13 | from dnsimple.service.vanity_name_servers import VanityNameServers 14 | from dnsimple.service.webhooks import Webhooks 15 | from dnsimple.service.zones import Zones 16 | -------------------------------------------------------------------------------- /dnsimple/service/accounts.py: -------------------------------------------------------------------------------- 1 | from dnsimple.response import Response 2 | from dnsimple.struct import Account 3 | 4 | 5 | class Accounts(object): 6 | """ 7 | Lists the accounts the authenticated entity has access to. 8 | 9 | See http://developer.dnsimple.com/v2/accounts 10 | """ 11 | def __init__(self, client): 12 | self.client = client 13 | 14 | def list_accounts(self): 15 | """ 16 | Lists the accounts the current authenticated entity has access to. 17 | 18 | :return: dnsimple.Response 19 | The response containing the list of accounts. 20 | """ 21 | response = self.client.get('/accounts') 22 | return Response(response, Account) 23 | -------------------------------------------------------------------------------- /dnsimple/service/billing.py: -------------------------------------------------------------------------------- 1 | from dnsimple.response import Response 2 | from dnsimple.struct import Charge 3 | 4 | class Billing(object): 5 | def __init__(self, client): 6 | self.client = client 7 | 8 | def list_charges(self, account: int, *, start_date=None, end_date=None, sort=None): 9 | """ 10 | Lists the billing charges for the account. 11 | 12 | See https://developer.dnsimple.com/v2/billing/#listCharges 13 | 14 | :param account: 15 | The account id 16 | """ 17 | response = self.client.get(f'/{account}/billing/charges', params={"start_date": start_date, "end_date": end_date, "sort": sort}) 18 | return Response(response, Charge) 19 | -------------------------------------------------------------------------------- /dnsimple/service/identity.py: -------------------------------------------------------------------------------- 1 | from dnsimple.response import Response 2 | from dnsimple.struct import Whoami 3 | 4 | 5 | class Identity(object): 6 | """ 7 | The Identity Service handles the identity (whoami) endpoint of the 8 | DNSimple API. 9 | 10 | See https://developer.dnsimple.com/v2/identity/ 11 | """ 12 | 13 | def __init__(self, client): 14 | """ 15 | Initializes the service by passing the service. 16 | 17 | :param client: dnsimple.Client 18 | The service for the DNSimple API 19 | """ 20 | self.client = client 21 | 22 | def whoami(self): 23 | """ 24 | Retrieves the details about the current authenticated entity used to 25 | access the DNSimple API. 26 | 27 | :return: dnsimple.Response 28 | A response containing the details of the authenticated entity 29 | """ 30 | response = self.client.get('/whoami') 31 | return Response(response, Whoami) 32 | -------------------------------------------------------------------------------- /dnsimple/service/vanity_name_servers.py: -------------------------------------------------------------------------------- 1 | from dnsimple.response import Response 2 | from dnsimple.struct import VanityNameServer 3 | 4 | 5 | class VanityNameServers(object): 6 | def __init__(self, client): 7 | self.client = client 8 | 9 | def enable_vanity_name_servers(self, account_id, domain): 10 | """ 11 | Enables Vanity Name Servers for the domain 12 | 13 | See https://developer.dnsimple.com/v2/vanity/#enableVanityNameServers 14 | 15 | :param account_id: int 16 | The account id 17 | :param domain: int/str 18 | The domain name or id 19 | :return: dnsimple.Response 20 | The vanity name server list 21 | """ 22 | response = self.client.put(f'/{account_id}/vanity/{domain}') 23 | return Response(response, VanityNameServer) 24 | 25 | def disable_vanity_name_servers(self, account_id, domain): 26 | """ 27 | Disables Vanity Name Servers for the domain 28 | 29 | See https://developer.dnsimple.com/v2/vanity/#disableVanityNameServers 30 | 31 | :param account_id: int 32 | The account id 33 | :param domain: int/str 34 | The domain name or id 35 | 36 | :return: dnsimple.Response 37 | An empty response 38 | """ 39 | response = self.client.delete(f'/{account_id}/vanity/{domain}') 40 | return Response(response) 41 | -------------------------------------------------------------------------------- /dnsimple/struct/access_token.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | 3 | from dnsimple.struct import Struct 4 | 5 | 6 | @dataclass 7 | class AccessToken(Struct): 8 | """ 9 | AccessToken represents a DNSimple Oauth access token. 10 | 11 | See https://developer.dnsimple.com/v2/oauth/ 12 | """ 13 | 14 | account_id = None 15 | """The account ID in DNSimple this token belongs to.""" 16 | token_type = None 17 | """The token type.""" 18 | access_token = None 19 | """The token you can use to authenticate.""" 20 | scope = None 21 | """The token scope (not used for now).""" 22 | 23 | def __init__(self, data): 24 | super().__init__(data) 25 | -------------------------------------------------------------------------------- /dnsimple/struct/account.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | 3 | from dnsimple.struct import Struct 4 | 5 | 6 | @dataclass 7 | class Account(Struct): 8 | """ 9 | Represents an Account. 10 | 11 | See https://developer.dnsimple.com/v2/identity/ 12 | """ 13 | 14 | id = None 15 | """The account ID in DNSimple""" 16 | email = None 17 | """The account email""" 18 | plan_identifier = None 19 | """The identifier of the plan the account is subscribed to""" 20 | created_at = None 21 | """When the account was created in DNSimple""" 22 | updated_at = None 23 | """When the account was last updated in DNSimple""" 24 | 25 | def __init__(self, data): 26 | super().__init__(data) 27 | -------------------------------------------------------------------------------- /dnsimple/struct/charge.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | from decimal import Decimal 3 | 4 | from dnsimple.struct import Struct 5 | 6 | 7 | @dataclass 8 | class Charge(Struct): 9 | invoiced_at = None 10 | total_amount = None 11 | balance_amount = None 12 | reference = None 13 | state = None 14 | items = None 15 | 16 | def __init__(self, data): 17 | super().__init__(data) 18 | if self.total_amount is not None: 19 | self.total_amount = Decimal(self.total_amount) 20 | if self.balance_amount is not None: 21 | self.balance_amount = Decimal(self.balance_amount) 22 | 23 | 24 | @dataclass 25 | class ChargeItem(Struct): 26 | description = None 27 | amount = None 28 | product_id = None 29 | product_type = None 30 | product_reference = None 31 | 32 | def __init__(self, data): 33 | super().__init__(data) 34 | if self.amount is not None: 35 | self.amount = Decimal(self.amount) 36 | -------------------------------------------------------------------------------- /dnsimple/struct/collaborator.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | 3 | from dnsimple.struct import Struct 4 | 5 | 6 | @dataclass 7 | class Collaborator(Struct): 8 | """ 9 | Represents a collaborator for a domain in the account 10 | 11 | See: https://developer.dnsimple.com/v2/domains/collaborators/ 12 | """ 13 | 14 | id = None 15 | """The collaborator ID in DNSimple""" 16 | domain_id = None 17 | """The associated domain ID""" 18 | domain_name = None 19 | """The associated domain name""" 20 | user_id = None 21 | """The user ID (if the collaborator accepted the invitation).""" 22 | user_email = None 23 | """The user email""" 24 | invitation = None 25 | """Invitation""" 26 | created_at = None 27 | """When the collaborator was created in DNSimple""" 28 | updated_at = None 29 | """When the collaborator was last updated in DNSimple""" 30 | accepted_at = None 31 | """When the collaborator accepted the invitation""" 32 | 33 | def __init__(self, data): 34 | super().__init__(data) 35 | -------------------------------------------------------------------------------- /dnsimple/struct/dns_analytics.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | 3 | from dnsimple.struct import Struct 4 | 5 | 6 | @dataclass 7 | class DnsAnalytics(Struct): 8 | """ 9 | Represents DNS Analytics information. 10 | 11 | See https://developer.dnsimple.com/v2/dns-analytics/ 12 | """ 13 | 14 | volume = None 15 | """The volume""" 16 | zone_name = None 17 | """The zone name""" 18 | date = None 19 | """The date""" 20 | 21 | def __init__(self, data): 22 | super().__init__(data) 23 | -------------------------------------------------------------------------------- /dnsimple/struct/dnssec.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | 3 | from dnsimple.struct import Struct 4 | 5 | 6 | @dataclass 7 | class Dnssec(Struct): 8 | """ 9 | Represents a DNSSEC for a Domain 10 | 11 | See https://developer.dnsimple.com/v2/domains/dnssec/ 12 | """ 13 | 14 | enabled = None 15 | """True if DNSSEC is enabled on the domain, otherwise false""" 16 | created_at = None 17 | """When the DNSSEC was created in DNSimple""" 18 | updated_at = None 19 | """When the DNSSEC was last updated in DNSimple""" 20 | 21 | def __init__(self, data): 22 | super().__init__(data) 23 | -------------------------------------------------------------------------------- /dnsimple/struct/domain.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | 3 | from dnsimple.struct import Struct 4 | 5 | 6 | @dataclass 7 | class Domain(Struct): 8 | """ 9 | Represents a Domain 10 | 11 | See https://developer.dnsimple.com/v2/domains/ 12 | """ 13 | 14 | id = None 15 | """The domain ID in DNSimple""" 16 | account_id = None 17 | """The associated account ID in DNSimple""" 18 | registrant_id = None 19 | """The associated registrant (contact) ID in DNSimple""" 20 | name = None 21 | """The domain name""" 22 | unicode_name = None 23 | """The domain unicode name""" 24 | state = None 25 | """The domain state""" 26 | auto_renew = False 27 | """True if the domain is set to auto-renew, false otherwise""" 28 | private_whois = False 29 | """True if the domain WHOIS privacy is enabled, false otherwise""" 30 | expires_at = None 31 | """The date the domain will expire""" 32 | created_at = None 33 | """When the domain was created in DNSimple""" 34 | updated_at = None 35 | """When the domain was last updated in DNSimple""" 36 | 37 | def __init__(self, data): 38 | super().__init__(data) 39 | -------------------------------------------------------------------------------- /dnsimple/struct/domain_check.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | 3 | from dnsimple.struct import Struct 4 | 5 | 6 | @dataclass 7 | class DomainCheck(Struct): 8 | domain = None 9 | """The domain name""" 10 | available = False 11 | """True if the domain is available""" 12 | premium = False 13 | """True if the domain is a premium domain""" 14 | 15 | def __init__(self, data): 16 | super().__init__(data) 17 | -------------------------------------------------------------------------------- /dnsimple/struct/domain_premium_price.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | 3 | from dnsimple.struct import Struct 4 | 5 | 6 | @dataclass 7 | class DomainPremiumPrice(Struct): 8 | """ 9 | DomainPremiumPrice represents the premium price for a premium domain. 10 | """ 11 | 12 | premium_price = None 13 | """The domain premium price""" 14 | action = None 15 | """The action (either registration, transfer or renewal)""" 16 | 17 | def __init__(self, data): 18 | super().__init__(data) 19 | 20 | 21 | class DomainPremiumPriceOptions(dict): 22 | """ 23 | DomainPremiumPriceOptions specifies the optional parameters you can provide to customize the 24 | dnsimple.services.Registrar.get_domain_premium_price method. 25 | """ 26 | def __init__(self, action=None): 27 | dict.__init__(self, action=action) 28 | -------------------------------------------------------------------------------- /dnsimple/struct/domain_price.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | 3 | from dnsimple.struct import Struct 4 | 5 | 6 | @dataclass 7 | class DomainPrice(Struct): 8 | """ 9 | DomainPrice represents the registration, transfer, and renewal prices. 10 | """ 11 | 12 | domain = None 13 | """The domain name""" 14 | premium = None 15 | """If the domain name is premium return True""" 16 | registartion_price = None 17 | """The domain's registation price""" 18 | renewal_price = None 19 | """The domain's renewal price""" 20 | transfer_price = None 21 | """The domain's transfer price""" 22 | def __init__(self, data): 23 | super().__init__(data) 24 | -------------------------------------------------------------------------------- /dnsimple/struct/domain_renewal.py: -------------------------------------------------------------------------------- 1 | import json 2 | from dataclasses import dataclass 3 | 4 | import omitempty 5 | 6 | from dnsimple.struct import Struct 7 | 8 | 9 | class DomainRenewRequest(dict): 10 | """DomainRenewRequest represents the attributes you can pass to a renew API request.""" 11 | def __init__(self, period=None, premium_price=None): 12 | dict.__init__(self, period=period, premium_price=premium_price) 13 | 14 | def to_json(self): 15 | return json.dumps(omitempty(self)) 16 | 17 | 18 | @dataclass 19 | class DomainRenewal(Struct): 20 | 21 | """Represents the result of a domain renewal call.""" 22 | id = None 23 | """The domain registration ID in DNSimple""" 24 | domain_id = None 25 | """The associated domain ID""" 26 | state = None 27 | """The state of the renewal""" 28 | period = None 29 | """The number of years the domain was registered for""" 30 | created_at = None 31 | """When the domain renewal was created in DNSimple""" 32 | updated_at = None 33 | """When the domain renewal was last updated in DNSimple""" 34 | 35 | def __init__(self, data): 36 | super().__init__(data) 37 | -------------------------------------------------------------------------------- /dnsimple/struct/domain_restore.py: -------------------------------------------------------------------------------- 1 | import json 2 | from dataclasses import dataclass 3 | 4 | import omitempty 5 | 6 | from dnsimple.struct import Struct 7 | 8 | 9 | class DomainRestoreRequest(dict): 10 | """DomainRestoreRequest represents the attributes you can pass to a restore API request.""" 11 | def __init__(self, premium_price=None): 12 | dict.__init__(self, premium_price=premium_price) 13 | 14 | def to_json(self): 15 | return json.dumps(omitempty(self)) 16 | 17 | 18 | @dataclass 19 | class DomainRestore(Struct): 20 | 21 | """Represents the result of a domain restore call.""" 22 | id = None 23 | """The domain registration ID in DNSimple""" 24 | domain_id = None 25 | """The associated domain ID""" 26 | state = None 27 | """The state of the restore""" 28 | created_at = None 29 | """When the domain restore was created in DNSimple""" 30 | updated_at = None 31 | """When the domain restore was last updated in DNSimple""" 32 | 33 | def __init__(self, data): 34 | super().__init__(data) 35 | -------------------------------------------------------------------------------- /dnsimple/struct/domain_transfer_lock.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | from dnsimple.struct.struct import Struct 3 | 4 | @dataclass 5 | class DomainTransferLock(Struct): 6 | enabled = None 7 | 8 | def __init__(self, data): 9 | super().__init__(data) 10 | -------------------------------------------------------------------------------- /dnsimple/struct/email_forward.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | 3 | from dnsimple.struct import Struct 4 | 5 | 6 | @dataclass 7 | class EmailForward(Struct): 8 | id = None 9 | """The email forward ID in DNSimple""" 10 | domain_id = None 11 | """The associated domain ID""" 12 | email_from = None 13 | """DEPRECATED: The "local part" of the originating email address. Anything to the left of the @ symbol""" 14 | email_to = None 15 | """DEPRECATED: The full email address to forward to""" 16 | alias_email = None 17 | destination_email = None 18 | active = None 19 | created_at = None 20 | """When the email forward was created in DNSimple""" 21 | updated_at = None 22 | """When the email forward was last updated in DNSimple""" 23 | 24 | def __init__(self, data): 25 | super().__init__(data) 26 | setattr(self, 'email_from', data['alias_email']) 27 | setattr(self, 'email_to', data['destination_email']) 28 | 29 | 30 | @dataclass 31 | class EmailForwardInput(object): 32 | def __init__(self, alias_name, destination_email): 33 | self.alias_name = alias_name 34 | self.destination_email = destination_email 35 | 36 | -------------------------------------------------------------------------------- /dnsimple/struct/registrant.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | from dnsimple.struct import Struct 3 | import json 4 | import omitempty 5 | 6 | 7 | @dataclass 8 | class RegistrantChange(Struct): 9 | id = None 10 | account_id = None 11 | contact_id = None 12 | domain_id = None 13 | state = None 14 | extended_attributes = None 15 | registry_owner_change = None 16 | irt_lock_lifted_by = None 17 | created_at = None 18 | updated_at = None 19 | 20 | def __init__(self, data): 21 | super().__init__(data) 22 | 23 | 24 | @dataclass 25 | class RegistrantChangeCheck(Struct): 26 | contact_id = None 27 | domain_id = None 28 | extended_attributes = None 29 | registry_owner_change = None 30 | 31 | def __init__(self, data): 32 | super().__init__(data) 33 | 34 | 35 | @dataclass 36 | class CreateRegistrantChangeInput(dict): 37 | def __init__(self, domain_id = None, contact_id = None, extended_attributes = None): 38 | super().__init__(domain_id=domain_id, contact_id=contact_id, extended_attributes=extended_attributes) 39 | 40 | def to_json(self): 41 | return json.dumps(omitempty(self)) 42 | 43 | 44 | @dataclass 45 | class CheckRegistrantChangeInput(dict): 46 | domain_id = None 47 | contact_id = None 48 | 49 | def __init__(self, domain_id = None, contact_id = None): 50 | super().__init__(domain_id=domain_id, contact_id=contact_id) 51 | 52 | def to_json(self): 53 | return json.dumps(omitempty(self)) 54 | -------------------------------------------------------------------------------- /dnsimple/struct/struct.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | 3 | from dnsimple.extra import attach_attributes_to 4 | 5 | 6 | @dataclass 7 | class Struct(object): 8 | 9 | def __init__(self, data): 10 | attach_attributes_to(self, data) 11 | -------------------------------------------------------------------------------- /dnsimple/struct/template.py: -------------------------------------------------------------------------------- 1 | import json 2 | from dataclasses import dataclass 3 | 4 | import omitempty 5 | 6 | from dnsimple.extra import attach_attributes_to 7 | 8 | 9 | @dataclass 10 | class Template(dict): 11 | """Represents a template in DNSimple""" 12 | 13 | id = None 14 | """The template ID in DNSimple""" 15 | account_id = None 16 | """The associated account ID""" 17 | name = None 18 | """The template name""" 19 | sid = None 20 | """The string ID for the template""" 21 | description = None 22 | """The template description""" 23 | created_at = None 24 | """When the template was created in DNSimple""" 25 | updated_at = None 26 | """When the template was last updated in DNSimple""" 27 | 28 | def __init__(self, data): 29 | attach_attributes_to(self, data) 30 | dict.__init__(self, id=self.id, account_id=self.account_id, name=self.name, sid=self.sid, 31 | description=self.description, created_at=self.created_at, updated_at=self.updated_at) 32 | 33 | def to_json(self): 34 | return json.dumps(omitempty(self)) 35 | 36 | @classmethod 37 | def new(cls, name, sid, description): 38 | """ 39 | Creates a new template 40 | 41 | :param name: str 42 | :param sid: str 43 | :param description: str 44 | :return: Template 45 | The newly created template 46 | """ 47 | return cls({'name': name, 'sid': sid, 'description': description}) 48 | -------------------------------------------------------------------------------- /dnsimple/struct/user.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | 3 | from dnsimple.struct import Struct 4 | 5 | 6 | @dataclass 7 | class User(Struct): 8 | """ 9 | Represents a User. 10 | 11 | See https://developer.dnsimple.com/v2/identity/ 12 | """ 13 | 14 | id = None 15 | """The ID of the user in DNSimple""" 16 | email = None 17 | """The users email""" 18 | created_at = None 19 | """When the user was created in DNSimple""" 20 | updated_at = None 21 | """When the user was last updated in DNSimple""" 22 | 23 | def __init__(self, data): 24 | super().__init__(data) 25 | -------------------------------------------------------------------------------- /dnsimple/struct/vanity_name_server.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | 3 | from dnsimple.struct import Struct 4 | 5 | 6 | @dataclass 7 | class VanityNameServer(Struct): 8 | id = None 9 | """The vanity name server ID in DNSimple""" 10 | name = None 11 | """The vanity name server name""" 12 | ipv4 = None 13 | """The vanity name server IPv4""" 14 | ipv6 = None 15 | """The vanity name server IPv6""" 16 | created_at = None 17 | """When the vanity name server was created in DNSimple""" 18 | updated_at = None 19 | """When the vanity name server was last updated in DNSimple""" 20 | 21 | def __init__(self, data): 22 | super().__init__(data) 23 | -------------------------------------------------------------------------------- /dnsimple/struct/webhook.py: -------------------------------------------------------------------------------- 1 | import json 2 | from dataclasses import dataclass 3 | 4 | import omitempty 5 | 6 | from dnsimple.extra import attach_attributes_to 7 | 8 | 9 | @dataclass 10 | class Webhook(dict): 11 | """Represents a DNSimple webhook""" 12 | 13 | id = None 14 | """The contact ID in DNSimple""" 15 | url = None 16 | """The callback URL""" 17 | 18 | def __init__(self, data): 19 | attach_attributes_to(self, data) 20 | dict.__init__(self, id=self.id, url=self.url) 21 | 22 | def to_json(self): 23 | return json.dumps(omitempty(self)) 24 | 25 | @classmethod 26 | def new(cls, url): 27 | return cls({'url': url}) 28 | -------------------------------------------------------------------------------- /dnsimple/struct/whoami.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | 3 | from dnsimple.struct.account import Account 4 | from dnsimple.struct.user import User 5 | 6 | 7 | @dataclass 8 | class Whoami(object): 9 | """ 10 | Represents the structure holding a User and Account object. 11 | """ 12 | account = None 13 | """The account, if present""" 14 | user = None 15 | """The user, if present""" 16 | 17 | def __init__(self, data): 18 | self.account = None if data['account'] is None else Account(data['account']) 19 | self.user = None if data['user'] is None else User(data['user']) 20 | -------------------------------------------------------------------------------- /dnsimple/struct/zone.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | 3 | from dnsimple.struct import Struct 4 | 5 | 6 | @dataclass 7 | class Zone(Struct): 8 | """ 9 | Represents a Zone 10 | 11 | See https://developer.dnsimple.com/v2/zones 12 | """ 13 | 14 | id = None 15 | """The zone ID in DNSimple""" 16 | account_id = None 17 | """The associated account ID in DNSimple""" 18 | name = None 19 | """The zone name""" 20 | reverse = None 21 | """True if the zone is a reverse zone""" 22 | secondary = None 23 | """True if the zone is a secondary zone""" 24 | last_transferred_at = None 25 | """When the zone was last transferred""" 26 | active = None 27 | """True if the zone is active""" 28 | created_at = None 29 | """When the zone was created in DNSimple""" 30 | updated_at = None 31 | """When the zone was last updated in DNSimple""" 32 | 33 | def __init__(self, data): 34 | super().__init__(data) 35 | -------------------------------------------------------------------------------- /dnsimple/struct/zone_distribution.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | 3 | from dnsimple.struct import Struct 4 | 5 | 6 | @dataclass 7 | class ZoneDistribution(Struct): 8 | """Represents the zone distribution""" 9 | 10 | distributed = None 11 | """true if the zone is properly distributed across all DNSimple name servers.""" 12 | 13 | def __init__(self, data): 14 | super().__init__(data) 15 | -------------------------------------------------------------------------------- /dnsimple/struct/zone_file.py: -------------------------------------------------------------------------------- 1 | from dataclasses import dataclass 2 | 3 | from dnsimple.struct import Struct 4 | 5 | 6 | @dataclass 7 | class ZoneFile(Struct): 8 | """Represents a zone file""" 9 | 10 | zone = None 11 | """The zone file content""" 12 | 13 | def __init__(self, data): 14 | super().__init__(data) 15 | -------------------------------------------------------------------------------- /dnsimple/token_authentication.py: -------------------------------------------------------------------------------- 1 | from requests.auth import AuthBase 2 | 3 | 4 | class TokenAuthentication(AuthBase): 5 | def __init__(self, token): 6 | self.token = token 7 | 8 | def __call__(self, r): 9 | r.headers['Authorization'] = 'Bearer {token}'.format(token=self.token) 10 | return r 11 | -------------------------------------------------------------------------------- /dnsimple/version.py: -------------------------------------------------------------------------------- 1 | version = '5.0.0' 2 | """Current version of the dnsimple-python service""" 3 | -------------------------------------------------------------------------------- /poetry.toml: -------------------------------------------------------------------------------- 1 | [repositories.testpypi] 2 | url = "https://test.pypi.org/legacy/" 3 | -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "dnsimple" 3 | version = "5.0.0" 4 | description = "DNSimple API service for python" 5 | authors = ["DNSimple External Integrations Team "] 6 | license = "MIT" 7 | readme = "README.md" 8 | packages = [{ include = "dnsimple" }] 9 | homepage = "https://github.com/dnsimple/dnsimple-python" 10 | repository = "https://github.com/dnsimple/dnsimple-python" 11 | classifiers = [ 12 | "Intended Audience :: Developers", 13 | "License :: OSI Approved :: MIT License", 14 | "Operating System :: OS Independent", 15 | "Programming Language :: Python", 16 | ] 17 | 18 | [tool.poetry.dependencies] 19 | python = "^3.12" 20 | requests = "^2.28.2" 21 | omitempty = "^0.1.1" 22 | 23 | [tool.poetry.group.test.dependencies] 24 | responses = ">=0.23.1,<0.26.0" 25 | 26 | [build-system] 27 | requires = ["poetry-core"] 28 | build-backend = "poetry.core.masonry.api" 29 | -------------------------------------------------------------------------------- /tests/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dnsimple/dnsimple-python/06b1de3a989d3662a1b851953fd1e94ef16f974d/tests/__init__.py -------------------------------------------------------------------------------- /tests/fixtures/v2/api/acceptPush/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 204 No Content 2 | Server: nginx 3 | Date: Thu, 11 Aug 2016 10:23:46 GMT 4 | Connection: keep-alive 5 | X-RateLimit-Limit: 2400 6 | X-RateLimit-Remaining: 2392 7 | X-RateLimit-Reset: 1470913058 8 | Cache-Control: no-cache 9 | X-Request-Id: 5867ab50-6237-4cf8-b220-51f5ef57debd 10 | X-Runtime: 0.582482 11 | X-Content-Type-Options: nosniff 12 | X-Download-Options: noopen 13 | X-Frame-Options: DENY 14 | X-Permitted-Cross-Domain-Policies: none 15 | X-XSS-Protection: 1; mode=block 16 | Strict-Transport-Security: max-age=31536000 17 | 18 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/accounts/success-account.http: -------------------------------------------------------------------------------- 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"}]} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/accounts/success-user.http: -------------------------------------------------------------------------------- 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":"dnsimple-professional","created_at":"2012-03-16T16:02:54Z","updated_at":"2016-06-14T11:23:16Z"}]} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/activateZoneService/success.http: -------------------------------------------------------------------------------- 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":"2015-04-23T07:40:03Z","updated_at":"2015-04-23T07:40:03Z"}} 17 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/addCollaborator/invite-success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Fri, 07 Oct 2016 08:51:12 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 2400 7 | X-RateLimit-Remaining: 2398 8 | X-RateLimit-Reset: 1475833772 9 | ETag: W/"3e59e2eafbf1d4b626413a5703309b57" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 9f27e164-2448-4d23-ad67-4ecedaec063e 12 | X-Runtime: 0.387144 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":101,"domain_id":1,"domain_name":"example.com","user_id":null,"user_email":"invited-user@example.com","invitation":true,"created_at":"2016-10-07T08:51:12Z","updated_at":"2016-10-07T08:51:12Z","accepted_at":null}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/addCollaborator/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Fri, 07 Oct 2016 08:53:41 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 2400 7 | X-RateLimit-Remaining: 2397 8 | X-RateLimit-Reset: 1475833772 9 | ETag: W/"d35fa3da40b4f6586503174563d71bfc" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 42de3144-37c7-4329-88c4-fdc103cb150f 12 | X-Runtime: 0.156436 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":100,"domain_id":1,"domain_name":"example.com","user_id":999,"user_email":"existing-user@example.com","invitation":false,"created_at":"2016-10-07T08:53:41Z","updated_at":"2016-10-07T08:53:41Z","accepted_at":"2016-10-07T08:53:41Z"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/appliedServices/success.http: -------------------------------------------------------------------------------- 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 | {"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}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/applyService/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 204 No Content 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 | 18 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/applyTemplate/success.http: -------------------------------------------------------------------------------- 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 | 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/authorizeDomainTransferOut/success.http: -------------------------------------------------------------------------------- 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 | 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/badgateway.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 502 Bad Gateway 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 | 8 | 9 | 502 Bad Gateway 10 | 11 |

502 Bad Gateway

12 |
nginx
13 | 14 | 15 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/cancelDomainTransfer/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 202 Accepted 2 | Server: nginx 3 | Date: Fri, 05 Jun 2020 18:09:42 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 2400 7 | X-RateLimit-Remaining: 2394 8 | X-RateLimit-Reset: 1591384034 9 | Cache-Control: no-cache 10 | X-Request-Id: 3cf6dcfa-0bb5-439e-863a-af2ef08bc830 11 | X-Runtime: 0.912731 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 | 18 | {"data":{"id":361,"domain_id":182245,"registrant_id":2715,"state":"transferring","auto_renew":false,"whois_privacy":false,"status_description":null,"created_at":"2020-06-05T18:08:00Z","updated_at":"2020-06-05T18:08:04Z"}} 19 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/changeDomainDelegation/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Thu, 24 Mar 2016 11:17:01 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 200 OK 7 | X-RateLimit-Limit: 2400 8 | X-RateLimit-Remaining: 2392 9 | X-RateLimit-Reset: 1458821049 10 | ETag: W/"cb540984f806b12ac437cc1f76092f90" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: 0ea7bdd2-63ca-4eef-9c41-4a83d2fe0067 13 | X-Runtime: 2.845860 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":["ns1.dnsimple.com","ns2.dnsimple.com","ns3.dnsimple.com","ns4.dnsimple.com"]} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/changeDomainDelegationFromVanity/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 204 No Content 2 | Server: nginx 3 | Date: Mon, 11 Jul 2016 09:55:23 GMT 4 | Connection: keep-alive 5 | X-RateLimit-Limit: 2400 6 | X-RateLimit-Remaining: 2398 7 | X-RateLimit-Reset: 1468233619 8 | Cache-Control: no-cache 9 | X-Request-Id: 334a5c9c-8205-414c-bca2-db0469ed0b4a 10 | X-Runtime: 0.385941 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 | 18 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/changeDomainDelegationToVanity/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Mon, 11 Jul 2016 09:40:19 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: 1468233619 9 | ETag: W/"ca1610ec571d766d1c1eda330b4fe9d6" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 931e4d9b-88ea-4723-b1b4-4b29c49b88b5 12 | X-Runtime: 0.270340 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":1,"name":"ns1.example.com","ipv4":"127.0.0.1","ipv6":"::1","created_at":"2016-07-11T09:40:19Z","updated_at":"2016-07-11T09:40:19Z"},{"id":2,"name":"ns2.example.com","ipv4":"127.0.0.1","ipv6":"::1","created_at":"2016-07-11T09:40:19Z","updated_at":"2016-07-11T09:40:19Z"}]} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/checkDomain/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Fri, 26 Feb 2016 16:04:05 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: 3999 9 | X-RateLimit-Reset: 1456506245 10 | ETag: W/"f3cf8499e935e48401aae26842f712c4" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: e3c6fac1-a36d-42c3-8a04-d68f127add18 13 | X-Runtime: 0.605907 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":{"domain":"ruby.codes","available":true,"premium":true}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/checkDomainPremiumPrice/error_400_not_a_premium_domain.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 400 Bad Request 2 | Server: nginx 3 | Date: Mon, 27 Jul 2020 13:43:02 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 4800 7 | X-RateLimit-Remaining: 4786 8 | X-RateLimit-Reset: 1595859922 9 | Cache-Control: no-cache 10 | X-Request-Id: 382b409c-0f90-4758-af3b-0bccd31a9d0d 11 | X-Runtime: 1.346405 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 | 18 | {"message":"`cocotero.love` is not a premium domain for registration"} 19 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/checkDomainPremiumPrice/error_400_tld_not_supported.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 400 Bad Request 2 | Server: nginx 3 | Date: Mon, 27 Jul 2020 13:41:23 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: 1595860823 9 | Cache-Control: no-cache 10 | X-Request-Id: 6986cca3-4f57-4814-9e81-1c484d61c7ea 11 | X-Runtime: 0.007339 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 | 18 | {"message":"TLD .LOVE is not supported"} 19 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/checkDomainPremiumPrice/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Mon, 27 Jul 2020 13:58:50 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 4800 7 | X-RateLimit-Remaining: 4769 8 | X-RateLimit-Reset: 1595859923 9 | ETag: W/"54b4776b898065f2f551fc33465d0936" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 75c5090e-8000-4e95-a516-ffd09383f641 12 | X-Runtime: 2.380524 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 | Strict-Transport-Security: max-age=31536000 19 | 20 | {"data":{"premium_price":"2640.00","action":"registration"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/checkRegistrantChange/success.http: -------------------------------------------------------------------------------- 1 | HTTP/2 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}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/checkZoneDistribution/error.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 504 Gateway Timeout 2 | Server: nginx 3 | Date: Mon, 30 Oct 2017 09:09:41 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: 1509358181 9 | ETag: W/"10fc650d019e6bffa876f08bce8f3380" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 91f124fc-671d-40fa-877b-0b222692f623 12 | X-Runtime: 0.471005 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 | {"message":"Could not query zone, connection timed out"} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/checkZoneDistribution/failure.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Mon, 30 Oct 2017 09:09:41 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: 1509358181 9 | ETag: W/"10fc650d019e6bffa876f08bce8f3380" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 91f124fc-671d-40fa-877b-0b222692f623 12 | X-Runtime: 0.471005 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":{"distributed":false}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/checkZoneDistribution/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Mon, 30 Oct 2017 09:09:41 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: 1509358181 9 | ETag: W/"10fc650d019e6bffa876f08bce8f3380" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 91f124fc-671d-40fa-877b-0b222692f623 12 | X-Runtime: 0.471005 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":{"distributed":true}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/checkZoneRecordDistribution/error.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 504 Gateway Timeout 2 | Server: nginx 3 | Date: Mon, 18 Dec 2017 10:54:48 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: 1513597686 9 | ETag: W/"10fc650d019e6bffa876f08bce8f3380" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 74059b13-9262-4e2d-b8ff-a833376dce19 12 | X-Runtime: 0.408180 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 | {"message":"Could not query zone, connection timed out"} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/checkZoneRecordDistribution/failure.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Mon, 18 Dec 2017 10:54:13 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: 1513597686 9 | ETag: W/"10fc650d019e6bffa876f08bce8f3380" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: f5a86610-0e22-4047-a27c-350769eaa6d5 12 | X-Runtime: 0.425440 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":{"distributed":false}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/checkZoneRecordDistribution/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Mon, 18 Dec 2017 10:48:06 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: 1513597686 9 | ETag: W/"10fc650d019e6bffa876f08bce8f3380" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 34c69751-ffee-4856-ac28-ead4f3a66e18 12 | X-Runtime: 0.438473 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":{"distributed":true}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/createContact/created.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Tue, 19 Jan 2016 20:50:26 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: 3997 9 | X-RateLimit-Reset: 1453239045 10 | ETag: W/"165299b0ea3e5c1c80f1ae622146626f" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: 9f577b9e-5bc4-4a8f-adfb-09dbb1992b0e 13 | X-Runtime: 0.061482 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":{"id":1,"account_id":1010,"label":"Default","first_name":"First","last_name":"User","job_title":"CEO","organization_name":"Awesome Company","email":"first@example.com","phone":"+18001234567","fax":"+18011234567","address1":"Italian Street, 10","address2":"","city":"Roma","state_province":"RM","postal_code":"00100","country":"IT","created_at":"2016-01-19T20:50:26Z","updated_at":"2016-01-19T20:50:26Z"}} 17 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/createDelegationSignerRecord/created.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Fri, 03 Mar 2017 15:24:00 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: 1488558240 9 | ETag: W/"6443c4a27424c31a2a08e941be6319a4" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 44b1448f-c7da-4988-ba5a-5b7f9892b1d2 12 | X-Runtime: 0.351659 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":2,"domain_id":1010,"algorithm":"13","digest":"684a1f049d7d082b7f98691657da5a65764913df7f065f6f8c36edf62d66ca03","digest_type":"2","keytag":"2371","public_key":null,"created_at":"2017-03-03T15:24:00Z","updated_at":"2017-03-03T15:24:00Z"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/createDelegationSignerRecord/validation-error.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 400 Bad Request 2 | Server: nginx 3 | Date: Fri, 03 Mar 2017 15:20:28 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 2400 7 | X-RateLimit-Remaining: 2395 8 | X-RateLimit-Reset: 1488554574 9 | Cache-Control: no-cache 10 | X-Request-Id: bf652af9-54cd-42c7-8fd3-2f52e2baea4b 11 | X-Runtime: 0.350846 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":{"algorithm":["can't be blank"],"digest":["can't be blank"],"digest_type":["can't be blank"],"keytag":["can't be blank"]}} 19 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/createDomain/created.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Thu, 04 Jun 2020 19:47:05 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 2400 7 | X-RateLimit-Remaining: 2378 8 | X-RateLimit-Reset: 1591300248 9 | ETag: W/"399e70627412fa31dba332feca5e8ec1" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: ee897eee-36cc-4b7f-be15-f4627f344bf9 12 | X-Runtime: 0.194561 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 | Strict-Transport-Security: max-age=31536000 19 | 20 | {"data":{"id":181985,"account_id":1385,"registrant_id":null,"name":"example-beta.com","unicode_name":"example-beta.com","state":"hosted","auto_renew":false,"private_whois":false,"expires_on":null,"expires_at":null,"created_at":"2020-06-04T19:47:05Z","updated_at":"2020-06-04T19:47:05Z"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/createEmailForward/created.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Mon, 25 Jan 2021 13:54:40 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Transfer-Encoding: identity 6 | Connection: keep-alive 7 | X-RateLimit-Limit: 4800 8 | X-RateLimit-Remaining: 4772 9 | X-RateLimit-Reset: 1611583415 10 | ETag: W/"80ad3ad1e115a8123193447fa003f68a" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: 1086590f-0e65-4010-8636-031400a662bf 13 | X-Runtime: 0.880228 14 | X-Frame-Options: DENY 15 | X-Content-Type-Options: nosniff 16 | X-XSS-Protection: 1; mode=block 17 | X-Download-Options: noopen 18 | X-Permitted-Cross-Domain-Policies: none 19 | Content-Security-Policy: frame-ancestors 'none' 20 | Strict-Transport-Security: max-age=31536000 21 | 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"}} 23 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/createPrimaryServer/created.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Wed, 17 Mar 2021 23:08:42 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 2400 7 | X-RateLimit-Remaining: 2388 8 | X-RateLimit-Reset: 1616024599 9 | ETag: W/"ceda02163217bdb9e6850e2c36cbf163" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 24ed1594-6701-475b-b66b-f85f9fe69736 12 | X-Runtime: 0.162800 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":{"id":4,"account_id":531,"name":"PrimaryProduction","ip":"1.2.3.4","port":53,"linked_secondary_zones":[],"created_at":"2021-03-17T23:08:42Z","updated_at":"2021-03-17T23:08:42Z"}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/createRegistrantChange/success.http: -------------------------------------------------------------------------------- 1 | HTTP/2 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"}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/createSecondaryZone/created.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Wed, 17 Mar 2021 23:44:27 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: 1616028241 9 | ETag: W/"9726e9abb694bb7a61777076d14158fd" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 967ead79-85e7-4950-aa70-52da90f9abcc 12 | X-Runtime: 0.294142 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":{"id":734,"account_id":531,"name":"secondaryexample.com","reverse":false,"secondary":true,"last_transferred_at":null,"created_at":"2021-03-17T23:44:27Z","updated_at":"2021-03-17T23:44:27Z"}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/createTemplate/created.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Thu, 24 Mar 2016 11:09:16 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 201 Created 7 | X-RateLimit-Limit: 2400 8 | X-RateLimit-Remaining: 2396 9 | X-RateLimit-Reset: 1458821049 10 | ETag: W/"c0be8a0056ccd8e0ee31a60c51256848" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: c4ab6dd9-87d4-4244-8ec8-9187a511b89c 13 | X-Runtime: 0.115316 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":{"id":1,"account_id":1010,"name":"Beta","sid":"beta","description":"A beta template.","created_at":"2016-03-24T11:09:16Z","updated_at":"2016-03-24T11:09:16Z"}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/createTemplateRecord/created.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Tue, 03 May 2016 07:51:33 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 201 Created 7 | X-RateLimit-Limit: 2400 8 | X-RateLimit-Remaining: 2398 9 | X-RateLimit-Reset: 1462265481 10 | ETag: W/"a8518ecf2fd31e6c22b0acccb5cef797" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: b2d51e79-b3d2-4abe-9184-155fb5546617 13 | X-Runtime: 0.190813 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":{"id":300,"template_id":268,"name":"","content":"mx.example.com","ttl":600,"priority":10,"type":"MX","created_at":"2016-05-03T07:51:33Z","updated_at":"2016-05-03T07:51:33Z"}} 17 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/createWebhook/created.http: -------------------------------------------------------------------------------- 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"}} 17 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/createZoneRecord/created-apex.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Thu, 07 Jan 2016 17:45:13 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: 3990 9 | X-RateLimit-Reset: 1452188712 10 | ETag: W/"a7ddff4ee5dc28bbebf3d416e8bd0f04" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: f96f5034-bf0c-4201-9564-493c162e3cb4 13 | X-Runtime: 0.099095 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":{"id":1,"zone_id":"example.com","parent_id":null,"name":"","content":"127.0.0.1","ttl":600,"priority":null,"type":"A","system_record":false,"regions":["global"],"created_at":"2016-01-07T17:45:13Z","updated_at":"2016-01-07T17:45:13Z"}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/createZoneRecord/created.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Thu, 07 Jan 2016 17:45:13 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: 3990 9 | X-RateLimit-Reset: 1452188712 10 | ETag: W/"a7ddff4ee5dc28bbebf3d416e8bd0f04" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: f96f5034-bf0c-4201-9564-493c162e3cb4 13 | X-Runtime: 0.099095 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":{"id":1,"zone_id":"example.com","parent_id":null,"name":"www","content":"127.0.0.1","ttl":600,"priority":null,"type":"A","system_record":false,"regions":["global"],"created_at":"2016-01-07T17:45:13Z","updated_at":"2016-01-07T17:45:13Z"}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/deactivateZoneService/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Tue, 08 Aug 2023 04:19:52 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: 1691471962 9 | X-WORK-WITH-US: Love automation? So do we! https://dnsimple.com/jobs 10 | ETag: W/"5f30a37d01b99bb9e620ef1bbce9a014" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: d2f7bba4-4c81-4818-81d2-c9bbe95f104e 13 | X-Runtime: 0.133278 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":false,"created_at":"2015-04-23T07:40:03Z","updated_at":"2015-04-23T07:40:03Z"}} 17 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/deleteContact/error-contact-in-use.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 400 Bad Request 2 | Server: nginx 3 | Date: Wed, 11 Apr 2018 10:50:21 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: 1523447401 9 | Cache-Control: no-cache 10 | X-Request-Id: 8d9f3de7-6e42-4a16-82eb-e2434dd58008 11 | X-Runtime: 0.271090 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":"The contact cannot be deleted because it's currently in use"} 19 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/deleteContact/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 204 No Content 2 | Server: nginx 3 | Date: Tue, 19 Jan 2016 21:49:42 GMT 4 | Connection: keep-alive 5 | Status: 204 No Content 6 | X-RateLimit-Limit: 4000 7 | X-RateLimit-Remaining: 3999 8 | X-RateLimit-Reset: 1453243782 9 | Cache-Control: no-cache 10 | X-Request-Id: 10c8528b-569b-4152-a89c-fc9c5f94afe9 11 | X-Runtime: 0.029858 12 | Strict-Transport-Security: max-age=31536000 13 | 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/deleteDelegationSignerRecord/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 204 No Content 2 | Server: nginx 3 | Date: Fri, 03 Mar 2017 15:25:00 GMT 4 | Connection: keep-alive 5 | X-RateLimit-Limit: 2400 6 | X-RateLimit-Remaining: 2398 7 | X-RateLimit-Reset: 1488558240 8 | Cache-Control: no-cache 9 | X-Request-Id: 50271e09-f056-4413-9eea-87e097d43e8b 10 | X-Runtime: 0.306806 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 | 18 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/deleteDomain/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 204 No Content 2 | Server: nginx 3 | Date: Fri, 18 Dec 2015 16:13:54 GMT 4 | Connection: keep-alive 5 | Strict-Transport-Security: max-age=31536000 6 | X-RateLimit-Limit: 4000 7 | X-RateLimit-Remaining: 3990 8 | X-RateLimit-Reset: 1450455233 9 | Cache-Control: no-cache 10 | X-Request-Id: a2924814-4aff-42cf-9785-9327ce097d0a 11 | X-Runtime: 0.241247 12 | Strict-Transport-Security: max-age=31536000 13 | 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/deleteEmailForward/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 204 No Content 2 | Server: nginx 3 | Date: Mon, 25 Jan 2021 13:56:43 GMT 4 | Connection: keep-alive 5 | X-RateLimit-Limit: 4800 6 | X-RateLimit-Remaining: 4765 7 | X-RateLimit-Reset: 1611583416 8 | Cache-Control: no-cache 9 | X-Request-Id: bfaceb73-4fd3-4490-8528-472ec1df3526 10 | X-Runtime: 0.506670 11 | X-Frame-Options: DENY 12 | X-Content-Type-Options: nosniff 13 | X-XSS-Protection: 1; mode=block 14 | X-Download-Options: noopen 15 | X-Permitted-Cross-Domain-Policies: none 16 | Content-Security-Policy: frame-ancestors 'none' 17 | Strict-Transport-Security: max-age=31536000 18 | 19 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/deleteRegistrantChange/success.http: -------------------------------------------------------------------------------- 1 | HTTP/2 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 | 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/deleteTemplate/success.http: -------------------------------------------------------------------------------- 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 | 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/deleteTemplateRecord/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 204 No Content 2 | Server: nginx 3 | Date: Tue, 03 May 2016 08:00:35 GMT 4 | Connection: keep-alive 5 | Status: 204 No Content 6 | X-RateLimit-Limit: 2400 7 | X-RateLimit-Remaining: 2397 8 | X-RateLimit-Reset: 1462265481 9 | Cache-Control: no-cache 10 | X-Request-Id: f0a48944-1c61-41f4-b379-04f8644d883b 11 | X-Runtime: 0.122787 12 | Strict-Transport-Security: max-age=31536000 13 | 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/deleteWebhook/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 204 No Content 2 | Server: nginx 3 | Date: Mon, 15 Feb 2016 17:05:39 GMT 4 | Connection: keep-alive 5 | Status: 204 No Content 6 | X-RateLimit-Limit: 4000 7 | X-RateLimit-Remaining: 3993 8 | X-RateLimit-Reset: 1455559348 9 | Cache-Control: no-cache 10 | X-Request-Id: d681e116-4a27-45a6-b571-3f74bfafb1f4 11 | X-Runtime: 0.520613 12 | Strict-Transport-Security: max-age=31536000 13 | 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/deleteZoneRecord/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 204 No Content 2 | Server: nginx 3 | Date: Thu, 07 Jan 2016 18:06:28 GMT 4 | Connection: keep-alive 5 | Status: 204 No Content 6 | X-RateLimit-Limit: 4000 7 | X-RateLimit-Remaining: 3987 8 | X-RateLimit-Reset: 1452189987 9 | Cache-Control: no-cache 10 | X-Request-Id: 776cea0f-98ae-4550-9a2e-81f8ab27f82b 11 | X-Runtime: 0.099235 12 | Strict-Transport-Security: max-age=31536000 13 | 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/disableDnssec/not-enabled.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 428 Precondition Required 2 | Server: nginx 3 | Date: Fri, 03 Mar 2017 10:00:36 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: 1488538622 9 | Cache-Control: no-cache 10 | X-Request-Id: 8e6cfeba-61f3-4449-9d95-dceaa1be30b0 11 | X-Runtime: 0.033649 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":"DNSSEC cannot be disabled because it is not enabled"} 19 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/disableDnssec/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 204 No Content 2 | Server: nginx 3 | Date: Fri, 03 Mar 2017 09:59:48 GMT 4 | Connection: keep-alive 5 | X-RateLimit-Limit: 2400 6 | X-RateLimit-Remaining: 2397 7 | X-RateLimit-Reset: 1488538622 8 | Cache-Control: no-cache 9 | X-Request-Id: d4904f31-9f5a-4616-a398-65915a2ade0f 10 | X-Runtime: 0.150273 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 | 18 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/disableDomainAutoRenewal/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 204 No Content 2 | Server: nginx 3 | Date: Fri, 12 Feb 2016 11:15:46 GMT 4 | Connection: keep-alive 5 | Status: 204 No Content 6 | X-RateLimit-Limit: 4000 7 | X-RateLimit-Remaining: 3996 8 | X-RateLimit-Reset: 1455279163 9 | Cache-Control: no-cache 10 | X-Request-Id: 6a8e83f1-f80c-4dc0-a462-d63c932a59bb 11 | X-Runtime: 0.509466 12 | Strict-Transport-Security: max-age=31536000 13 | 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/disableDomainTransferLock/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Tue, 15 Aug 2023 09:58:37 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: 1488538623 9 | ETag: W/"fc2368a31a1b6a3afcca33bb37ff6b9d" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 8b0fe49a-c810-4552-84ab-a1cd9b4a7786 12 | X-Runtime: 0.024780 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":{"enabled":false}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/disableVanityNameServers/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 204 No Content 2 | Server: nginx 3 | Date: Tue, 12 Jul 2016 08:56:00 GMT 4 | Connection: keep-alive 5 | X-RateLimit-Limit: 2400 6 | X-RateLimit-Remaining: 2398 7 | X-RateLimit-Reset: 1468314483 8 | Cache-Control: no-cache 9 | X-Request-Id: 99c3fef2-d875-40fd-961c-194bffd694f1 10 | X-Runtime: 5.983300 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 | 18 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/disableWhoisPrivacy/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Sat, 13 Feb 2016 14:36:38 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: 3995 9 | X-RateLimit-Reset: 1455377134 10 | ETag: W/"56e3e7f76ba9c84dcab9aef72347edf2" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: 4831c4d9-e62e-4710-a999-4ab32a900cea 13 | X-Runtime: 0.988453 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":{"id":1,"domain_id":2,"expires_on":"2017-02-13","enabled":false,"created_at":"2016-02-13T14:34:50Z","updated_at":"2016-02-13T14:36:38Z"}} 17 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/dnsAnalytics/success.http: -------------------------------------------------------------------------------- 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": {"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}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/enableDnssec/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Fri, 03 Mar 2017 13:49:58 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: 1488552566 9 | ETag: W/"80f207d402f1a1a4845455aa064c3735" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 49ea1585-3871-4829-90f4-ea2aad994256 12 | X-Runtime: 0.700056 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":{"enabled":true,"created_at":"2017-03-03T13:49:58Z","updated_at":"2017-03-03T13:49:58Z"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/enableDomainAutoRenewal/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 204 No Content 2 | Server: nginx 3 | Date: Fri, 12 Feb 2016 11:13:38 GMT 4 | Connection: keep-alive 5 | Status: 204 No Content 6 | X-RateLimit-Limit: 4000 7 | X-RateLimit-Remaining: 3997 8 | X-RateLimit-Reset: 1455279163 9 | Cache-Control: no-cache 10 | X-Request-Id: 46e77cb2-157e-4740-8cd3-f20d4d653c95 11 | X-Runtime: 7.702967 12 | Strict-Transport-Security: max-age=31536000 13 | 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/enableDomainTransferLock/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Tue, 15 Aug 2023 09:58:37 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: 1488538623 9 | ETag: W/"fc2368a31a1b6a3afcca33bb37ff6b9d" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 8b0fe49a-c810-4552-84ab-a1cd9b4a7786 12 | X-Runtime: 0.024780 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":{"enabled":true}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/enableVanityNameServers/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Thu, 14 Jul 2016 13:22:17 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: 1468506137 9 | ETag: W/"ddc2c4431fb922cefbf5706b6d32796e" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 3fd2135a-aeb4-4297-8826-a10705740fbb 12 | X-Runtime: 0.438926 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":1,"name":"ns1.example.com","ipv4":"127.0.0.1","ipv6":"::1","created_at":"2016-07-14T13:22:17Z","updated_at":"2016-07-14T13:22:17Z"},{"id":2,"name":"ns2.example.com","ipv4":"127.0.0.1","ipv6":"::1","created_at":"2016-07-14T13:22:17Z","updated_at":"2016-07-14T13:22:17Z"},{"id":3,"name":"ns3.example.com","ipv4":"127.0.0.1","ipv6":"::1","created_at":"2016-07-14T13:22:17Z","updated_at":"2016-07-14T13:22:17Z"},{"id":4,"name":"ns4.example.com","ipv4":"127.0.0.1","ipv6":"::1","created_at":"2016-07-14T13:22:17Z","updated_at":"2016-07-14T13:22:17Z"}]} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/enableWhoisPrivacy/created.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Sat, 13 Feb 2016 14:34:52 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: 3997 9 | X-RateLimit-Reset: 1455377135 10 | ETag: W/"c955cdcda56f131395952576e6ded0b6" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: 779eff1a-429c-432a-ad17-617502d62e69 13 | X-Runtime: 2.563855 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":{"id":1,"domain_id":2,"expires_on":null,"enabled":null,"created_at":"2016-02-13T14:34:50Z","updated_at":"2016-02-13T14:34:50Z"}} 17 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/enableWhoisPrivacy/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Sat, 13 Feb 2016 14:36:49 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: 3994 9 | X-RateLimit-Reset: 1455377135 10 | ETag: W/"1063ebb3e281ca6e1941874002696cd7" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: 34453d13-76ba-4f64-ad94-2d536c61826c 13 | X-Runtime: 1.408974 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":{"id":1,"domain_id":2,"expires_on":"2017-02-13","enabled":true,"created_at":"2016-02-13T14:34:50Z","updated_at":"2016-02-13T14:36:48Z"}} 17 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getContact/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Tue, 19 Jan 2016 20:57:38 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: 3996 9 | X-RateLimit-Reset: 1453239045 10 | ETag: W/"165299b0ea3e5c1c80f1ae622146626f" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: 4c0679ed-5c79-41bf-84cb-0dc2250a07ce 13 | X-Runtime: 0.127802 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":{"id":1,"account_id":1010,"label":"Default","first_name":"First","last_name":"User","job_title":"CEO","organization_name":"Awesome Company","email":"first@example.com","phone":"+18001234567","fax":"+18011234567","address1":"Italian Street, 10","address2":"","city":"Roma","state_province":"RM","postal_code":"00100","country":"IT","created_at":"2016-01-19T20:50:26Z","updated_at":"2016-01-19T20:50:26Z"}} 17 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getDelegationSignerRecord/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Fri, 03 Mar 2017 13:53:06 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: 1488552566 9 | ETag: W/"0aa4c6cec5adfa60dcf78ed2c3c661dd" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: ccf90c89-d463-43c6-ac25-3839169e1afd 12 | X-Runtime: 0.024246 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":24,"domain_id":1010,"algorithm":"8","digest":"C1F6E04A5A61FBF65BF9DC8294C363CF11C89E802D926BDAB79C55D27BEFA94F","digest_type":"2","keytag":"44620","public_key":null,"created_at":"2017-03-03T13:49:58Z","updated_at":"2017-03-03T13:49:58Z"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getDnssec/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Fri, 03 Mar 2017 09:58:37 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: 1488538623 9 | ETag: W/"fc2368a31a1b6a3afcca33bb37ff6b9d" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 8b0fe49a-c810-4552-84ab-a1cd9b4a7786 12 | X-Runtime: 0.024780 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":{"enabled":true,"created_at":"2017-02-03T17:43:22Z","updated_at":"2017-02-03T17:43:22Z"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getDomain/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Thu, 04 Jun 2020 19:37:22 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 2400 7 | X-RateLimit-Remaining: 2379 8 | X-RateLimit-Reset: 1591300247 9 | ETag: W/"ff4a8463ecca39d4869695d66de60043" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 2e8259ab-c933-487e-8f85-d23f1cdf62fa 12 | X-Runtime: 0.019482 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 | Strict-Transport-Security: max-age=31536000 19 | 20 | {"data":{"id":181984,"account_id":1385,"registrant_id":2715,"name":"example-alpha.com","unicode_name":"example-alpha.com","state":"registered","auto_renew":false,"private_whois":false,"expires_on":"2021-06-05","expires_at":"2021-06-05T02:15:00Z","created_at":"2020-06-04T19:15:14Z","updated_at":"2020-06-04T19:15:21Z"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getDomainDelegation/success-empty.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Thu, 24 Mar 2016 11:13:41 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 200 OK 7 | X-RateLimit-Limit: 2400 8 | X-RateLimit-Remaining: 2393 9 | X-RateLimit-Reset: 1458821048 10 | ETag: W/"e0234245cb00aa260ccfa99a9a0b235e" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: c88385f9-c8f7-435a-9060-0b1a27488b2b 13 | X-Runtime: 0.206440 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":[]} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getDomainDelegation/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Thu, 24 Mar 2016 11:17:18 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 200 OK 7 | X-RateLimit-Limit: 2400 8 | X-RateLimit-Remaining: 2391 9 | X-RateLimit-Reset: 1458821048 10 | ETag: W/"cb540984f806b12ac437cc1f76092f90" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: e53ac7b5-0d26-45bc-9226-09c2d34be293 13 | X-Runtime: 0.192986 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":["ns1.dnsimple.com","ns2.dnsimple.com","ns3.dnsimple.com","ns4.dnsimple.com"]} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getDomainPremiumPrice/failure.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 400 Bad Request 2 | Server: nginx 3 | Date: Tue, 22 Nov 2016 10:48:27 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Cache-Control: no-cache 7 | X-Request-Id: 1304138f-0fc7-4845-b9ed-e3803409cb5a 8 | X-Runtime: 1.421413 9 | X-Content-Type-Options: nosniff 10 | X-Download-Options: noopen 11 | X-Frame-Options: DENY 12 | X-Permitted-Cross-Domain-Policies: none 13 | X-XSS-Protection: 1; mode=block 14 | 15 | {"message":"`example.com` is not a premium domain for registration"} 16 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getDomainPremiumPrice/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Tue, 22 Nov 2016 10:46:17 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: 1479815177 9 | ETag: W/"7ed6ab997deeafd985a5782df2d86b04" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 54731b91-cd76-4d08-9481-c0f55f47996d 12 | X-Runtime: 1.013083 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":{"premium_price":"109.00","action":"registration"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getDomainPrices/failure.http: -------------------------------------------------------------------------------- 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 | {"message":"TLD .PINEAPPLE is not supported"} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getDomainPrices/success.http: -------------------------------------------------------------------------------- 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}} 22 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getDomainRegistration/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Fri, 05 Jun 2020 18:23:53 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 2400 7 | X-RateLimit-Remaining: 2392 8 | X-RateLimit-Reset: 1591384034 9 | ETag: W/"80c5827934c13b1ca87a587d96e7d1e8" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 9f4959ee-06a9-488c-906e-27a570cafbbf 12 | X-Runtime: 0.078429 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 | Strict-Transport-Security: max-age=31536000 19 | 20 | {"data":{"id":361,"domain_id":104040,"registrant_id":2715,"period":1,"state":"registering","auto_renew":false,"whois_privacy":false,"created_at":"2023-01-27T17:44:32Z","updated_at":"2023-01-27T17:44:40Z"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getDomainRenewal/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Fri, 09 Dec 2016 19:46:57 GMT 4 | Content-Type: application/json; charset=utf-8 5 | 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 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":1,"domain_id":999,"period":1,"state":"renewed","created_at":"2016-12-09T19:46:45Z","updated_at":"2016-12-12T19:46:45Z"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getDomainRestore/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Fri, 09 Dec 2016 19:46:57 GMT 4 | Content-Type: application/json; charset=utf-8 5 | 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 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":1,"domain_id":999,"state":"restored","created_at":"2016-12-09T19:46:45Z","updated_at":"2016-12-12T19:46:45Z"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getDomainTransfer/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Fri, 05 Jun 2020 18:23:53 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 2400 7 | X-RateLimit-Remaining: 2392 8 | X-RateLimit-Reset: 1591384034 9 | ETag: W/"80c5827934c13b1ca87a587d96e7d1e8" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 9f4959ee-06a9-488c-906e-27a570cafbbf 12 | X-Runtime: 0.078429 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 | Strict-Transport-Security: max-age=31536000 19 | 20 | {"data":{"id":361,"domain_id":182245,"registrant_id":2715,"state":"cancelled","auto_renew":false,"whois_privacy":false,"status_description":"Canceled by customer","created_at":"2020-06-05T18:08:00Z","updated_at":"2020-06-05T18:10:01Z"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getDomainTransferLock/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Tue, 15 Aug 2023 09:58:37 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: 1488538623 9 | ETag: W/"fc2368a31a1b6a3afcca33bb37ff6b9d" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 8b0fe49a-c810-4552-84ab-a1cd9b4a7786 12 | X-Runtime: 0.024780 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":{"enabled":true}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getEmailForward/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Mon, 25 Jan 2021 13:56:24 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Transfer-Encoding: identity 6 | Connection: keep-alive 7 | X-RateLimit-Limit: 4800 8 | X-RateLimit-Remaining: 4766 9 | X-RateLimit-Reset: 1611583416 10 | ETag: W/"80ad3ad1e115a8123193447fa003f68a" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: 8f3a9517-f623-4d14-be2b-3f332a4d7873 13 | X-Runtime: 0.010653 14 | X-Frame-Options: DENY 15 | X-Content-Type-Options: nosniff 16 | X-XSS-Protection: 1; mode=block 17 | X-Download-Options: noopen 18 | X-Permitted-Cross-Domain-Policies: none 19 | Content-Security-Policy: frame-ancestors 'none' 20 | Strict-Transport-Security: max-age=31536000 21 | 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"}} 23 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getPrimaryServer/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Wed, 17 Mar 2021 23:18:40 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 2400 7 | X-RateLimit-Remaining: 2386 8 | X-RateLimit-Reset: 1616024599 9 | ETag: W/"ceda02163217bdb9e6850e2c36cbf163" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 259fc436-7146-4e6b-98fa-3c43f541482b 12 | X-Runtime: 0.033067 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":{"id":4,"account_id":531,"name":"PrimaryProduction","ip":"1.2.3.4","port":53,"linked_secondary_zones":[],"created_at":"2021-03-17T23:08:42Z","updated_at":"2021-03-17T23:08:42Z"}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getRegistrantChange/success.http: -------------------------------------------------------------------------------- 1 | HTTP/2 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"}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getService/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Fri, 15 Apr 2016 14:50:13 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 200 OK 7 | X-RateLimit-Limit: 2400 8 | X-RateLimit-Remaining: 2394 9 | X-RateLimit-Reset: 1460735221 10 | ETag: W/"be453ad05df875577d40dbfbb479239a" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: 741b849f-dba6-4d0b-a68c-f47fe1aa3a54 13 | X-Runtime: 0.140632 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":{"id":1,"name":"Service 1","sid":"service1","description":"First service example.","setup_description":null,"requires_setup":true,"default_subdomain":null,"created_at":"2014-02-14T19:15:19Z","updated_at":"2016-03-04T09:23:27Z","settings":[{"name":"username","label":"Service 1 Account Username","append":".service1.com","description":"Your Service 1 username is used to connect services to your account.","example":"username","password":false}]}} 17 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getTemplate/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Tue, 22 Mar 2016 11:14:57 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 200 OK 7 | X-RateLimit-Limit: 2400 8 | X-RateLimit-Remaining: 2394 9 | X-RateLimit-Reset: 1458648490 10 | ETag: W/"6a2c0c6789d853473765a5fc5662da2e" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: 3401ffd6-730f-42c0-856c-3b270ca4b35f 13 | X-Runtime: 0.938420 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":{"id":1,"account_id":1010,"name":"Alpha","sid":"alpha","description":"An alpha template.","created_at":"2016-03-22T11:08:58Z","updated_at":"2016-03-22T11:08:58Z"}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getTemplateRecord/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Tue, 03 May 2016 08:04:20 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 200 OK 7 | X-RateLimit-Limit: 2400 8 | X-RateLimit-Remaining: 2394 9 | X-RateLimit-Reset: 1462265481 10 | ETag: W/"743142eab9fecf3edb41e9b3f30a903f" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: 6484e900-7255-4194-9ff8-ae5650ebd765 13 | X-Runtime: 0.138017 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":{"id":301,"template_id":268,"name":"","content":"mx.example.com","ttl":600,"priority":10,"type":"MX","created_at":"2016-05-03T08:03:26Z","updated_at":"2016-05-03T08:03:26Z"}} 17 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getTld/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Fri, 23 Sep 2016 09:06:13 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: 1474622397 9 | ETag: W/"8e3d87c11204e76362765aea4c0916e0" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 426d0884-2583-45d8-8ab6-0e36050ba6dc 12 | X-Runtime: 0.011580 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":{"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"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getTldExtendedAttributes/success-noattributes.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Sun, 28 Feb 2016 13:19:18 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: 3996 9 | X-RateLimit-Reset: 1456669058 10 | ETag: W/"e0234245cb00aa260ccfa99a9a0b235e" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: 414e9bf2-4681-4769-a3e0-ed9b8905edcc 13 | X-Runtime: 0.459391 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":[]} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getWebhook/success.http: -------------------------------------------------------------------------------- 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"}} 17 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getWhoisPrivacy/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Sat, 13 Feb 2016 14:35:37 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: 3996 9 | X-RateLimit-Reset: 1455377135 10 | ETag: W/"10be37d45cd224b2178b8a2f86c466ea" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: 78afe010-0f54-4d39-9ed3-08c67d545a35 13 | X-Runtime: 0.031770 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":{"id":1,"domain_id":2,"expires_on":"2017-02-13","enabled":true,"created_at":"2016-02-13T14:34:50Z","updated_at":"2016-02-13T14:34:52Z"}} 17 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getZone/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Fri, 22 Jan 2016 16:54:14 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: 3995 9 | X-RateLimit-Reset: 1453484046 10 | ETag: W/"2161245abd349a34cba32a970e6424ba" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: 93182033-a215-484e-a107-5235fa48001c 13 | X-Runtime: 0.177942 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":{"id":1,"account_id":1010,"name":"example-alpha.com","reverse":false,"secondary":false,"last_transferred_at":null,"active":true,"created_at":"2015-04-23T07:40:03Z","updated_at":"2015-04-23T07:40:03Z"}} 17 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getZoneFile/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Wed, 20 Jul 2016 09:04:24 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: 1469008918 9 | ETag: W/"85eb7f1ef577371eadf7d5b05203a60e" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: eb3c7bc0-882d-4bb4-873d-aa4d4a3ddc81 12 | X-Runtime: 0.021226 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":{"zone":"$ORIGIN example.com.\n$TTL 1h\nexample.com. 3600 IN SOA ns1.dnsimple.com. admin.dnsimple.com. 1453132552 86400 7200 604800 300\nexample.com. 3600 IN NS ns1.dnsimple.com.\nexample.com. 3600 IN NS ns2.dnsimple.com.\nexample.com. 3600 IN NS ns3.dnsimple.com.\nexample.com. 3600 IN NS ns4.dnsimple.com.\n"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/getZoneRecord/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Wed, 05 Oct 2016 09:53:54 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 2400 7 | X-RateLimit-Remaining: 2394 8 | X-RateLimit-Reset: 1475662530 9 | ETag: W/"d4d22097268cd23fab63ef3e9982b5c1" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 8a07b24d-6f59-4012-9f53-6cae893f0372 12 | X-Runtime: 0.051822 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":5,"zone_id":"example.com","parent_id":null,"name":"","content":"mxa.example.com","ttl":600,"priority":10,"type":"MX","regions":["SV1", "IAD"],"system_record":false,"created_at":"2016-10-05T09:51:35Z","updated_at":"2016-10-05T09:51:35Z"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/initiatePush/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Thu, 11 Aug 2016 10:16:03 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 2400 7 | X-RateLimit-Remaining: 2395 8 | X-RateLimit-Reset: 1470913058 9 | ETag: W/"fbbdec6f757e014f6f0b2159090aed80" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 3c3f4bee-3e06-4998-8946-02d4fae26fa4 12 | X-Runtime: 0.601397 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":1,"domain_id":100,"contact_id":null,"account_id":2020,"created_at":"2016-08-11T10:16:03Z","updated_at":"2016-08-11T10:16:03Z","accepted_at":null}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/issueLetsencryptCertificate/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 202 Accepted 2 | Server: nginx 3 | Date: Thu, 18 Jun 2020 18:56:21 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 4800 7 | X-RateLimit-Remaining: 4798 8 | X-RateLimit-Reset: 1592510057 9 | Cache-Control: no-cache 10 | X-Request-Id: 1d6bdd7c-a88e-4ac2-9d12-36699a32b006 11 | X-Runtime: 0.884870 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 | 18 | {"data":{"id":101967,"domain_id":289333,"contact_id":2511,"name":"www","common_name":"www.bingo.pizza","years":1,"csr":null,"state":"requesting","auto_renew":false,"alternate_names":[],"authority_identifier":"letsencrypt","created_at":"2020-06-18T18:54:17Z","updated_at":"2020-06-18T18:56:20Z","expires_at":null,"expires_on":null}} 19 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/issueRenewalLetsencryptCertificate/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 202 Accepted 2 | Server: nginx 3 | Date: Thu, 18 Jun 2020 20:05:26 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 4800 7 | X-RateLimit-Remaining: 4798 8 | X-RateLimit-Reset: 1592513780 9 | Cache-Control: no-cache 10 | X-Request-Id: a7194bb4-aea4-42c6-846f-cd96f5f3cf5c 11 | X-Runtime: 0.897152 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 | 18 | {"data":{"id":101972,"domain_id":289333,"contact_id":2511,"name":"www","common_name":"www.bingo.pizza","years":1,"csr":null,"state":"requesting","auto_renew":false,"alternate_names":[],"authority_identifier":"letsencrypt","created_at":"2020-06-18T19:56:20Z","updated_at":"2020-06-18T20:05:26Z","expires_at":null,"expires_on":null}} 19 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/linkPrimaryServer/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Wed, 17 Mar 2021 23:29:51 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 2400 7 | X-RateLimit-Remaining: 2384 8 | X-RateLimit-Reset: 1616024598 9 | ETag: W/"911f7a8bf729e066d3d0aedce7eaab4e" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 104a8bbe-a4a7-41b1-9d51-499596f5b228 12 | X-Runtime: 0.249251 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":{"id":4,"account_id":531,"name":"PrimaryProduction","ip":"1.2.3.4","port":53,"linked_secondary_zones":["secondaryzone.com"],"created_at":"2021-03-17T23:08:42Z","updated_at":"2021-03-17T23:08:42Z"}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/listAccounts/success-account.http: -------------------------------------------------------------------------------- 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"}]} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/listAccounts/success-user.http: -------------------------------------------------------------------------------- 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":"dnsimple-professional","created_at":"2012-03-16T16:02:54Z","updated_at":"2016-06-14T11:23:16Z"}]} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/listCharges/fail-400-bad-filter.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 400 Bad Request 2 | Date: Tue, 24 Oct 2023 08:13:01 GMT 3 | Connection: close 4 | X-RateLimit-Limit: 2400 5 | X-RateLimit-Remaining: 2392 6 | X-RateLimit-Reset: 1698136677 7 | Content-Type: application/json; charset=utf-8 8 | X-WORK-WITH-US: Love automation? So do we! https://dnsimple.com/jobs 9 | Cache-Control: no-cache 10 | X-Request-Id: bdfbf3a7-d9dc-4018-9732-61502be989a3 11 | X-Runtime: 0.455303 12 | Transfer-Encoding: chunked 13 | 14 | {"message":"Invalid date format must be ISO8601 (YYYY-MM-DD)"} 15 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/listCharges/fail-403.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 403 Forbidden 2 | Date: Tue, 24 Oct 2023 09:49:29 GMT 3 | Connection: close 4 | X-RateLimit-Limit: 2400 5 | X-RateLimit-Remaining: 2398 6 | X-RateLimit-Reset: 1698143967 7 | Content-Type: application/json; charset=utf-8 8 | X-WORK-WITH-US: Love automation? So do we! https://dnsimple.com/jobs 9 | Cache-Control: no-cache 10 | X-Request-Id: 5554e2d3-2652-4ca7-8c5e-92b4c35f28d6 11 | X-Runtime: 0.035309 12 | Transfer-Encoding: chunked 13 | 14 | {"message":"Permission Denied. Required Scope: billing:*:read"} 15 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/listCollaborators/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Fri, 07 Oct 2016 08:58:05 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: 1475833772 9 | ETag: W/"6e597053b3cfbbfec6801fcdc2e98466" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: ccbbef00-d0a7-442f-9f40-80df8cea868d 12 | X-Runtime: 0.063426 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":100,"domain_id":1,"domain_name":"example.com","user_id":999,"user_email":"existing-user@example.com","invitation":false,"created_at":"2016-10-07T08:53:41Z","updated_at":"2016-10-07T08:53:41Z","accepted_at":"2016-10-07T08:53:41Z"},{"id":101,"domain_id":1,"domain_name":"example.com","user_id":null,"user_email":"invited-user@example.com","invitation":true,"created_at":"2016-10-07T08:51:12Z","updated_at":"2016-10-07T08:51:12Z","accepted_at":null}],"pagination":{"current_page":1,"per_page":30,"total_entries":2,"total_pages":1}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/listContacts/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Tue, 19 Jan 2016 18:35:01 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: 3998 9 | X-RateLimit-Reset: 1453232080 10 | ETag: W/"42b9dd8efe7dec210d55855cdf2debae" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: 7871da61-ecf1-4771-8560-efbcf7f4b961 13 | X-Runtime: 0.067822 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":[{"id":1,"account_id":1010,"label":"Default","first_name":"First","last_name":"User","job_title":"CEO","organization_name":"Awesome Company","email":"first@example.com","phone":"+18001234567","fax":"+18011234567","address1":"Italian Street, 10","address2":"","city":"Roma","state_province":"RM","postal_code":"00100","country":"IT","created_at":"2013-11-08T17:23:15Z","updated_at":"2015-01-08T21:30:50Z"},{"id":2,"account_id":1010,"label":"","first_name":"Second","last_name":"User","job_title":"","organization_name":"","email":"second@example.com","phone":"+18881234567","fax":"","address1":"French Street","address2":"c/o Someone","city":"Paris","state_province":"XY","postal_code":"00200","country":"FR","created_at":"2014-12-06T15:46:18Z","updated_at":"2014-12-06T15:46:18Z"}],"pagination":{"current_page":1,"per_page":30,"total_entries":2,"total_pages":1}} 17 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/listDelegationSignerRecords/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Fri, 03 Mar 2017 13:50:42 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: 1488552565 9 | ETag: W/"33c8bbfc699dba2c259b8ec2596ae40d" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: ef8f1fe9-d342-41c4-a7bc-402434c53458 12 | X-Runtime: 0.019866 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":24,"domain_id":1010,"algorithm":"8","digest":"C1F6E04A5A61FBF65BF9DC8294C363CF11C89E802D926BDAB79C55D27BEFA94F","digest_type":"2","keytag":"44620","public_key":null,"created_at":"2017-03-03T13:49:58Z","updated_at":"2017-03-03T13:49:58Z"}],"pagination":{"current_page":1,"per_page":30,"total_entries":1,"total_pages":1}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/listDomains/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Thu, 04 Jun 2020 19:54:16 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: 1591304056 9 | ETag: W/"732eac2d85c19810f4e84dbc0eaafb9d" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 458d7b96-bb1a-469a-817e-4fd65c0f1db3 12 | X-Runtime: 0.125593 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 | Strict-Transport-Security: max-age=31536000 19 | 20 | {"data":[{"id":181984,"account_id":1385,"registrant_id":2715,"name":"example-alpha.com","unicode_name":"example-alpha.com","state":"registered","auto_renew":false,"private_whois":false,"expires_on":"2021-06-05","expires_at":"2021-06-05T02:15:00Z","created_at":"2020-06-04T19:15:14Z","updated_at":"2020-06-04T19:15:21Z"},{"id":181985,"account_id":1385,"registrant_id":null,"name":"example-beta.com","unicode_name":"example-beta.com","state":"hosted","auto_renew":false,"private_whois":false,"expires_on":null,"expires_at":null,"created_at":"2020-06-04T19:47:05Z","updated_at":"2020-06-04T19:47:05Z"}],"pagination":{"current_page":1,"per_page":30,"total_entries":2,"total_pages":1}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/listEmailForwards/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Fri, 17 May 2024 09:07:28 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 4800 7 | X-RateLimit-Remaining: 4748 8 | X-RateLimit-Reset: 1715936948 9 | X-WORK-WITH-US: Love automation? So do we! https://dnsimple.com/jobs 10 | ETag: W/"a5eed9a071f03e10fc67001ccc647a94" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: e42df983-a8a5-4123-8c74-fb89ab934aba 13 | X-Runtime: 0.025456 14 | Strict-Transport-Security: max-age=63072000 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}} 17 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/listPrimaryServers/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Wed, 17 Mar 2021 22:45:37 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 2400 7 | X-RateLimit-Remaining: 2394 8 | X-RateLimit-Reset: 1616024598 9 | ETag: W/"1a8276fb3483d6954afe139480753c5b" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 411f7b7c-3ebb-4b6a-a986-5ffd8dcd4144 12 | X-Runtime: 0.159587 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":[{"id":1,"account_id":531,"name":"Primary","ip":"1.1.1.1","port":4567,"linked_secondary_zones":[],"created_at":"2021-03-05T18:02:23Z","updated_at":"2021-03-05T18:02:23Z"},{"id":2,"account_id":531,"name":"Primary Production","ip":"1.1.1.1","port":4567,"linked_secondary_zones":["secondaryzone.com"],"created_at":"2021-03-16T20:33:34Z","updated_at":"2021-03-16T20:33:34Z"}],"pagination":{"current_page":1,"per_page":30,"total_entries":2,"total_pages":1}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/listPushes/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Thu, 11 Aug 2016 10:19:54 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 2400 7 | X-RateLimit-Remaining: 2393 8 | X-RateLimit-Reset: 1470913058 9 | ETag: W/"fd29a0a43fb53ae2e5186232361fa4b9" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 12611d3b-aee5-49e3-a8bf-bd7899b1e797 12 | X-Runtime: 0.045678 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":1,"domain_id":100,"contact_id":null,"account_id":2020,"created_at":"2016-08-11T10:16:03Z","updated_at":"2016-08-11T10:16:03Z","accepted_at":null},{"id":2,"domain_id":101,"contact_id":null,"account_id":2020,"created_at":"2016-08-11T10:18:48Z","updated_at":"2016-08-11T10:18:48Z","accepted_at":null}],"pagination":{"current_page":1,"per_page":30,"total_entries":2,"total_pages":1}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/listRegistrantChanges/success.http: -------------------------------------------------------------------------------- 1 | HTTP/2 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}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/listServices/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Sat, 10 Dec 2016 22:37:13 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: 1481413033 9 | ETag: W/"65425ab4559f111f28bc952f3b672d48" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 9a5dadcb-8e90-4fe9-ad60-be13ba3d3970 12 | X-Runtime: 0.263229 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":1,"name":"Service 1","sid":"service1","description":"First service example.","setup_description":null,"requires_setup":false,"default_subdomain":null,"created_at":"2014-02-14T19:15:19Z","updated_at":"2016-03-04T09:23:27Z","settings":[]},{"id":2,"name":"Service 2","sid":"service2","description":"Second service example.","setup_description":null,"requires_setup":true,"default_subdomain":null,"created_at":"2014-02-14T19:15:19Z","updated_at":"2016-03-04T09:23:27Z","settings":[{"name":"username","label":"Service 2 Account Username","append":".service2.com","description":"Your Service2 username is used to connect services to your account.","example":"username","password":false}]}],"pagination":{"current_page":1,"per_page":30,"total_entries":2,"total_pages":1}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/listTemplateRecords/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Tue, 03 May 2016 08:07:17 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 200 OK 7 | X-RateLimit-Limit: 2400 8 | X-RateLimit-Remaining: 2391 9 | X-RateLimit-Reset: 1462265481 10 | ETag: W/"3e53584bcf1ce7c7ee4c0bdf734224fa" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: 79c25a93-0660-4479-a71f-201c26309e00 13 | X-Runtime: 0.252889 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":[{"id":296,"template_id":268,"name":"","content":"192.168.1.1","ttl":3600,"priority":null,"type":"A","created_at":"2016-04-26T08:23:54Z","updated_at":"2016-04-26T08:23:54Z"},{"id":298,"template_id":268,"name":"www","content":"{{domain}}","ttl":3600,"priority":null,"type":"CNAME","created_at":"2016-04-26T08:25:11Z","updated_at":"2016-04-26T08:25:11Z"}],"pagination":{"current_page":1,"per_page":30,"total_entries":2,"total_pages":1}} 17 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/listTemplates/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Tue, 22 Mar 2016 11:11:50 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 200 OK 7 | X-RateLimit-Limit: 2400 8 | X-RateLimit-Remaining: 2396 9 | X-RateLimit-Reset: 1458648490 10 | ETag: W/"2d1c99cff82eace0e995d901b465bbde" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: 774e871f-8bda-40d7-bed9-bd907e872987 13 | X-Runtime: 0.193956 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":[{"id":1,"account_id":1010,"name":"Alpha","sid":"alpha","description":"An alpha template.","created_at":"2016-03-22T11:08:58Z","updated_at":"2016-03-22T11:08:58Z"},{"id":2,"account_id":1010,"name":"Beta","sid":"beta","description":"A beta template.","created_at":"2016-03-22T11:11:26Z","updated_at":"2016-03-22T11:11:26Z"}],"pagination":{"current_page":1,"per_page":30,"total_entries":2,"total_pages":1}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/listTlds/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Fri, 23 Sep 2016 08:22:50 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: 1474622397 9 | ETag: W/"06436132982cdf558bc1472b1e15a786" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: c78c1f6c-2143-4646-9049-313ccd9e24bd 12 | X-Runtime: 0.012861 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":[{"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}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/listWebhooks/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Mon, 15 Feb 2016 17:06:21 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: 3991 9 | X-RateLimit-Reset: 1455559348 10 | ETag: W/"01f1ea26e8e06d8d969bf06678bf7d12" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: bc611cd0-d1a9-48d0-b450-c9c86f0d0dcf 13 | X-Runtime: 0.104174 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":[{"id":1,"url":"https://webhook.test"},{"id":2,"url":"https://another.test"}]} 17 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/listZones/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Fri, 22 Jan 2016 16:54:24 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: 3994 9 | X-RateLimit-Reset: 1453484045 10 | ETag: W/"485e03204e1853519bd637be743f2b25" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: 01be9fa5-3a00-4d51-a927-f17587cb67ec 13 | X-Runtime: 0.037083 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":[{"id":1,"account_id":1010,"name":"example-alpha.com","reverse":false,"secondary":false,"last_transferred_at":null,"active":true,"created_at":"2015-04-23T07:40:03Z","updated_at":"2015-04-23T07:40:03Z"},{"id":2,"account_id":1010,"name":"example-beta.com","reverse":false,"secondary":false,"last_transferred_at":null,"active":true,"created_at":"2015-04-23T07:40:03Z","updated_at":"2015-04-23T07:40:03Z"}],"pagination":{"current_page":1,"per_page":30,"total_entries":2,"total_pages":1}} 17 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/method-not-allowed.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 405 Method Not Allowed 2 | Server: nginx 3 | Date: Fri, 15 Apr 2016 14:15:04 GMT 4 | Connection: keep-alive 5 | Status: 405 Method Not Allowed 6 | Allow: DELETE, GET, HEAD, PATCH, POST 7 | Cache-Control: no-cache 8 | X-Request-Id: 64c0a5e1-4cbb-4287-98a7-93085a77ac55 9 | X-Runtime: 0.050104 10 | 11 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/notfound-certificate.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 404 Not Found 2 | Server: nginx 3 | Date: Tue, 19 Jul 2016 08:56:34 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Cache-Control: no-cache 7 | X-Request-Id: 9a51fa7e-cc9b-498b-bf8d-ee3b2819c0c6 8 | X-Runtime: 0.040469 9 | X-Content-Type-Options: nosniff 10 | X-Download-Options: noopen 11 | X-Frame-Options: DENY 12 | X-Permitted-Cross-Domain-Policies: none 13 | X-XSS-Protection: 1; mode=block 14 | 15 | {"message":"Certificate `0` not found"} 16 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/notfound-collaborator.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 404 Not Found 2 | Server: nginx 3 | Date: Mon, 21 Nov 2016 09:32:48 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Cache-Control: no-cache 7 | X-Request-Id: 3e76b10b-412c-42ef-87d1-f8ff327df997 8 | X-Runtime: 0.030250 9 | X-Content-Type-Options: nosniff 10 | X-Download-Options: noopen 11 | X-Frame-Options: DENY 12 | X-Permitted-Cross-Domain-Policies: none 13 | X-XSS-Protection: 1; mode=block 14 | 15 | {"message":"Membership `0` not found"} 16 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/notfound-contact.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 404 Not Found 2 | Server: nginx 3 | Date: Tue, 19 Jan 2016 21:04:48 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 404 Not Found 7 | Cache-Control: no-cache 8 | X-Request-Id: a57d4e23-3155-477e-8469-e897b27c03e5 9 | X-Runtime: 0.014159 10 | 11 | {"message":"Contact `0` not found"} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/notfound-delegationSignerRecord.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 404 Not Found 2 | Server: nginx 3 | Date: Thu, 04 Feb 2016 14:44:56 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 404 Not Found 7 | Cache-Control: no-cache 8 | X-Request-Id: 50eea494-cc14-4db0-bc11-306aa525bbfd 9 | X-Runtime: 0.028036 10 | 11 | {"message":"Delegation signer record `0` not found"} 12 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/notfound-domain.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 404 Not Found 2 | Server: nginx 3 | Date: Wed, 16 Dec 2015 22:07:20 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Strict-Transport-Security: max-age=31536000 7 | Cache-Control: no-cache 8 | X-Request-Id: bc587ea7-bcd5-4c10-a940-a9b4c8339824 9 | X-Runtime: 0.059966 10 | 11 | {"message":"Domain `0` not found"} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/notfound-domainpush.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 404 Not Found 2 | Server: nginx 3 | Date: Thu, 04 Feb 2016 14:44:56 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 404 Not Found 7 | Cache-Control: no-cache 8 | X-Request-Id: 50eea494-cc14-4db0-bc11-306aa525bbfd 9 | X-Runtime: 0.028036 10 | 11 | {"message":"Domain push `0` not found"} 12 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/notfound-emailforward.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 404 Not Found 2 | Server: nginx 3 | Date: Thu, 04 Feb 2016 14:44:56 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 404 Not Found 7 | Cache-Control: no-cache 8 | X-Request-Id: 50eea494-cc14-4db0-bc11-306aa525bbfd 9 | X-Runtime: 0.028036 10 | 11 | {"message":"Email forward `0` not found"} 12 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/notfound-record.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 404 Not Found 2 | Server: nginx 3 | Date: Fri, 22 Jan 2016 16:46:07 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 404 Not Found 7 | Cache-Control: no-cache 8 | X-Request-Id: 35af0fd2-d020-4f70-861e-b6a42a190bf6 9 | X-Runtime: 0.018847 10 | 11 | {"message":"Record `0` not found"} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/notfound-template.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 404 Not Found 2 | Server: nginx 3 | Date: Wed, 04 May 2016 09:35:45 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 404 Not Found 7 | Cache-Control: no-cache 8 | X-Request-Id: 8d380d93-b974-4d51-82a3-5b10bce4167a 9 | X-Runtime: 0.071884 10 | 11 | {"message":"Template `beta` not found"} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/notfound-webhook.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 404 Not Found 2 | Server: nginx 3 | Date: Thu, 03 Mar 2016 11:55:29 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 404 Not Found 7 | Cache-Control: no-cache 8 | X-Request-Id: 4f154fa2-3ce9-4bdd-88a3-42ccc8dbc087 9 | X-Runtime: 0.012159 10 | 11 | {"message":"Webhook `0` not found"} 12 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/notfound-whoisprivacy.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 404 Not Found 2 | Server: nginx 3 | Date: Sat, 13 Feb 2016 14:34:32 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 404 Not Found 7 | Cache-Control: no-cache 8 | X-Request-Id: d5ce788e-bd8d-4edb-bcd6-50a1deacd595 9 | X-Runtime: 0.031090 10 | 11 | {"message":"Whois privacy for example-1455121347.com not found"} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/notfound-zone.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 404 Not Found 2 | Server: nginx 3 | Date: Fri, 22 Jan 2016 16:46:02 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 404 Not Found 7 | Cache-Control: no-cache 8 | X-Request-Id: 9c19bef5-6902-421c-9f91-dec3bae26102 9 | X-Runtime: 0.014705 10 | 11 | {"message":"Zone `0` not found"} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/oauthAccessToken/error-invalid-request.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 400 Bad Request 2 | Server: nginx 3 | Date: Mon, 08 Feb 2016 21:24:19 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 30 7 | X-RateLimit-Remaining: 29 8 | X-RateLimit-Reset: 1454970259 9 | ETag: W/"def417b4ade951f8148bb6a4fa3fcf5a" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: e8c544cf-fcc3-4762-a200-60c0320a2575 12 | X-Runtime: 0.105600 13 | Strict-Transport-Security: max-age=31536000 14 | 15 | {"error":"invalid_request","error_description":"Invalid \"state\": value doesn't match the \"state\" in the authorization request"} 16 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/oauthAccessToken/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Mon, 08 Feb 2016 21:24:19 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 200 OK 7 | X-RateLimit-Limit: 30 8 | X-RateLimit-Remaining: 29 9 | X-RateLimit-Reset: 1454970259 10 | ETag: W/"def417b4ade951f8148bb6a4fa3fcf5a" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: e8c544cf-fcc3-4762-a200-60c0320a2575 13 | X-Runtime: 0.105600 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"access_token":"zKQ7OLqF5N1gylcJweA9WodA000BUNJD","token_type":"Bearer","scope":null,"account_id":1} 17 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/pages-1of3.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Wed, 16 Dec 2015 13:36:11 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 4000 7 | X-RateLimit-Remaining: 3997 8 | X-RateLimit-Reset: 1450272970 9 | ETag: W/"2679531e6cce6cd326f255255d7a0005" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: a87f1b44-150a-4ed0-b7da-9301fa1465b0 12 | X-Runtime: 0.093714 13 | Strict-Transport-Security: max-age=31536000 14 | 15 | {"data":[{"id":1},{"id":2}],"pagination":{"current_page":1,"per_page":2,"total_entries":5,"total_pages":3}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/pages-2of3.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Wed, 16 Dec 2015 13:36:11 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 4000 7 | X-RateLimit-Remaining: 3997 8 | X-RateLimit-Reset: 1450272970 9 | ETag: W/"2679531e6cce6cd326f255255d7a0005" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: a87f1b44-150a-4ed0-b7da-9301fa1465b0 12 | X-Runtime: 0.093714 13 | Strict-Transport-Security: max-age=31536000 14 | 15 | {"data":[{"id":3},{"id":4}],"pagination":{"current_page":2,"per_page":2,"total_entries":5,"total_pages":3}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/pages-3of3.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Wed, 16 Dec 2015 13:36:11 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 4000 7 | X-RateLimit-Remaining: 3997 8 | X-RateLimit-Reset: 1450272970 9 | ETag: W/"2679531e6cce6cd326f255255d7a0005" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: a87f1b44-150a-4ed0-b7da-9301fa1465b0 12 | X-Runtime: 0.093714 13 | Strict-Transport-Security: max-age=31536000 14 | 15 | {"data":[{"id":5}],"pagination":{"current_page":3,"per_page":2,"total_entries":5,"total_pages":3}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/purchaseLetsencryptCertificate/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Thu, 18 Jun 2020 18:54:17 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 4800 7 | X-RateLimit-Remaining: 4799 8 | X-RateLimit-Reset: 1592510057 9 | ETag: W/"36ffdd6505ed488a3aeeaace031c5869" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 4e99c95d-6d19-48ea-8d63-e68432631c90 12 | X-Runtime: 0.098745 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 | Strict-Transport-Security: max-age=31536000 19 | 20 | {"data":{"id":101967,"certificate_id":101967,"state":"new","auto_renew":false,"created_at":"2020-06-18T18:54:17Z","updated_at":"2020-06-18T18:54:17Z"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/purchaseRenewalLetsencryptCertificate/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Thu, 18 Jun 2020 19:56:20 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 4800 7 | X-RateLimit-Remaining: 4799 8 | X-RateLimit-Reset: 1592513780 9 | ETag: W/"84dd908f85153590082766bd8d1f1056" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: f43f4d80-a7eb-43d3-b1ec-95eba413894e 12 | X-Runtime: 0.091216 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 | Strict-Transport-Security: max-age=31536000 19 | 20 | {"data":{"id":65082,"old_certificate_id":101967,"new_certificate_id":101972,"state":"new","auto_renew":false,"created_at":"2020-06-18T19:56:20Z","updated_at":"2020-06-18T19:56:20Z"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/registerDomain/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Fri, 09 Dec 2016 19:35:38 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: 1481315246 9 | ETag: W/"440b25022ab55cd8e84be64356bfd7d9" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: aac22ee4-31d7-4d71-ad3d-d0004f5cf370 12 | X-Runtime: 11.906207 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":1,"domain_id":999,"registrant_id":2,"period":1,"state":"new","auto_renew":false,"whois_privacy":false,"created_at":"2016-12-09T19:35:31Z","updated_at":"2016-12-09T19:35:31Z"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/rejectPush/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 204 No Content 2 | Server: nginx 3 | Date: Thu, 11 Aug 2016 10:24:54 GMT 4 | Connection: keep-alive 5 | X-RateLimit-Limit: 2400 6 | X-RateLimit-Remaining: 2391 7 | X-RateLimit-Reset: 1470913059 8 | Cache-Control: no-cache 9 | X-Request-Id: c0258478-1392-49b2-9b94-67b173acae12 10 | X-Runtime: 0.174739 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 | 18 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/removeCollaborator/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 204 No Content 2 | Server: nginx 3 | Date: Fri, 07 Oct 2016 09:08:51 GMT 4 | Connection: keep-alive 5 | X-RateLimit-Limit: 2400 6 | X-RateLimit-Remaining: 2395 7 | X-RateLimit-Reset: 1475833773 8 | Cache-Control: no-cache 9 | X-Request-Id: 732cdd0a-9ae5-4853-93ef-3511652b687a 10 | X-Runtime: 0.098437 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 | 18 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/renewDomain/error-tooearly.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 400 Bad Request 2 | Server: nginx 3 | Date: Mon, 15 Feb 2016 15:06:35 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 400 Bad Request 7 | X-RateLimit-Limit: 4000 8 | X-RateLimit-Remaining: 3998 9 | X-RateLimit-Reset: 1455552316 10 | Cache-Control: no-cache 11 | X-Request-Id: 0c1507d3-4c03-4ba3-b2bd-b0cabf021ed8 12 | X-Runtime: 0.256476 13 | 14 | {"message":"example.com may not be renewed at this time","errors":{}} 15 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/renewDomain/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Fri, 09 Dec 2016 19:46:57 GMT 4 | Content-Type: application/json; charset=utf-8 5 | 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 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":1,"domain_id":999,"period":1,"state":"new","created_at":"2016-12-09T19:46:45Z","updated_at":"2016-12-09T19:46:45Z"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/renewWhoisPrivacy/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Thu, 10 Jan 2019 12:12:50 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: 1547125899 9 | ETag: W/"e5bf5d90a6c95e5f1443dcbaf2cc27c6" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 6e80e830-21ae-46ea-9191-98811884808a 12 | X-Runtime: 1.459325 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 | Strict-Transport-Security: max-age=31536000 19 | 20 | {"data":{"id":1,"domain_id":100,"whois_privacy_id":999,"state":"new","expires_on":"2020-01-10","enabled":true,"created_at":"2019-01-10T12:12:48Z","updated_at":"2019-01-10T12:12:48Z"}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/renewWhoisPrivacy/whois-privacy-duplicated-order.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 400 Bad Request 2 | Server: nginx 3 | Date: Thu, 10 Jan 2019 12:13:21 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: 1547125899 9 | Cache-Control: no-cache 10 | X-Request-Id: 16cc92bb-fe38-434b-b483-602d77ac77d3 11 | X-Runtime: 0.122201 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 | 18 | {"message":"The whois privacy for example.com has just been renewed, a new renewal cannot be started at this time"} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/renewWhoisPrivacy/whois-privacy-not-found.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 400 Bad Request 2 | Server: nginx 3 | Date: Thu, 10 Jan 2019 12:11:39 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: 1547125899 9 | Cache-Control: no-cache 10 | X-Request-Id: 2727b7c4-97af-4e22-9c7f-bd84e20f2dc1 11 | X-Runtime: 0.139925 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 | 18 | {"message":"WHOIS privacy not found for example.com"} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/resetDomainToken/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Thu, 04 Feb 2016 10:13:19 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Transfer-Encoding: chunked 6 | Connection: keep-alive 7 | Status: 201 Created 8 | X-RateLimit-Limit: 4000 9 | X-RateLimit-Remaining: 3999 10 | X-RateLimit-Reset: 1454584399 11 | ETag: W/"834381fd3fd0896e344e3fad9e77ab97" 12 | Cache-Control: max-age=0, private, must-revalidate 13 | X-Request-Id: bf1b3976-2edd-4ea6-b606-1d60eaa0403d 14 | X-Runtime: 0.075404 15 | Strict-Transport-Security: max-age=31536000 16 | 17 | {"data":{"id":1,"account_id":1010,"registrant_id":null,"name":"example-alpha.com","unicode_name":"example-alpha.com","token":"domain-token","state":"hosted","auto_renew":false,"private_whois":false,"expires_on":null,"created_at":"2014-12-06T15:56:55Z","updated_at":"2015-12-09T00:20:56Z"}} 18 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/response.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Fri, 18 Dec 2015 15:19:37 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 4000 7 | X-RateLimit-Remaining: 3991 8 | X-RateLimit-Reset: 1450451976 9 | ETag: W/"5ea6326bc1a8e83e5c156c564f2559f0" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 15a7f3a5-7ee5-4e36-ac5a-8c21c2e1fffd 12 | X-Runtime: 0.141588 13 | Strict-Transport-Security: max-age=31536000 14 | 15 | {"data":{"user":null,"account":null}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/restoreDomain/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Fri, 09 Dec 2016 19:46:57 GMT 4 | Content-Type: application/json; charset=utf-8 5 | 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 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":1,"domain_id":999,"state":"new","created_at":"2016-12-09T19:46:45Z","updated_at":"2016-12-09T19:46:45Z"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/success-with-malformed-json.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Mon, 22 Dec 2014 14:16:12 GMT 4 | Content-Type: text/html 5 | Connection: close 6 | 7 | 8 | 200 OK 9 | 10 |

200 OK

11 |
nginx
12 | 13 | 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/transferDomain/error-indnsimple.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 400 Bad Request 2 | Server: nginx 3 | Date: Sun, 21 Feb 2016 13:11:54 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 400 Bad Request 7 | X-RateLimit-Limit: 4000 8 | X-RateLimit-Remaining: 3996 9 | X-RateLimit-Reset: 1456063541 10 | Cache-Control: no-cache 11 | X-Request-Id: 15d2e302-e835-4dda-9652-03d8962280ae 12 | X-Runtime: 0.994068 13 | 14 | {"message":"The domain google.com is already in DNSimple and cannot be added"} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/transferDomain/error-missing-authcode.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 400 Bad Request 2 | Server: nginx 3 | Date: Sun, 21 Feb 2016 13:11:11 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 400 Bad Request 7 | X-RateLimit-Limit: 4000 8 | X-RateLimit-Remaining: 3997 9 | X-RateLimit-Reset: 1456063540 10 | Cache-Control: no-cache 11 | X-Request-Id: d7a0eb63-77eb-4488-bc55-c129ed8fe192 12 | X-Runtime: 11.912567 13 | 14 | {"message":"Validation failed","errors":{"base":["You must provide an authorization code for the domain"]}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/transferDomain/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 201 Created 2 | Server: nginx 3 | Date: Fri, 09 Dec 2016 19:43:43 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 2400 7 | X-RateLimit-Remaining: 2395 8 | X-RateLimit-Reset: 1481315246 9 | ETag: W/"e58e7ac3ad9e30162c5098f29f208066" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 0d00c622-9fc8-406a-93cb-d2c5d6ecd6b4 12 | X-Runtime: 6.483160 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":1,"domain_id":999,"registrant_id":2,"state":"transferring","auto_renew":false,"whois_privacy":false,"created_at":"2016-12-09T19:43:41Z","updated_at":"2016-12-09T19:43:43Z"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/unapplyService/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 204 No Content 2 | Server: nginx 3 | Date: Sat, 09 Jul 2016 11:13:48 GMT 4 | Connection: keep-alive 5 | X-RateLimit-Limit: 2400 6 | X-RateLimit-Remaining: 2397 7 | X-RateLimit-Reset: 1468066326 8 | Cache-Control: no-cache 9 | X-Request-Id: bb164b01-636a-4d02-acb5-a829afc5ea8c 10 | X-Runtime: 0.070508 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 | 18 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/unlinkPrimaryServer/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Wed, 17 Mar 2021 23:36:43 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 2400 7 | X-RateLimit-Remaining: 2383 8 | X-RateLimit-Reset: 1616024599 9 | ETag: W/"ceda02163217bdb9e6850e2c36cbf163" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 789c6feb-63e1-40d6-b2b6-f569b23a507c 12 | X-Runtime: 0.270968 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":{"id":4,"account_id":531,"name":"PrimaryProduction","ip":"1.2.3.4","port":53,"linked_secondary_zones":[],"created_at":"2021-03-17T23:08:42Z","updated_at":"2021-03-17T23:08:42Z"}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/updateContact/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Tue, 19 Jan 2016 21:28:13 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: 3995 9 | X-RateLimit-Reset: 1453239045 10 | ETag: W/"4a798ad8f083076b23d3eed622eefc2d" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: c0e1e24f-d22d-4832-a30e-2f4ffc40b029 13 | X-Runtime: 0.053262 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":{"id":1,"account_id":1010,"label":"Default","first_name":"First","last_name":"User","job_title":"CEO","organization_name":"Awesome Company","email":"first@example.com","phone":"+18001234567","fax":"+18011234567","address1":"Italian Street, 10","address2":"","city":"Roma","state_province":"RM","postal_code":"00100","country":"IT","created_at":"2016-01-19T20:50:26Z","updated_at":"2016-01-19T20:50:26Z"}} 17 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/updateTemplate/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Thu, 24 Mar 2016 11:04:55 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | Status: 200 OK 7 | X-RateLimit-Limit: 2400 8 | X-RateLimit-Remaining: 2398 9 | X-RateLimit-Reset: 1458821048 10 | ETag: W/"6a2c0c6789d853473765a5fc5662da2e" 11 | Cache-Control: max-age=0, private, must-revalidate 12 | X-Request-Id: 3a7993e7-8b1e-47ce-a7a8-cc86b02904de 13 | X-Runtime: 0.324954 14 | Strict-Transport-Security: max-age=31536000 15 | 16 | {"data":{"id":1,"account_id":1010,"name":"Alpha","sid":"alpha","description":"An alpha template.","created_at":"2016-03-22T11:08:58Z","updated_at":"2016-03-22T11:08:58Z"}} -------------------------------------------------------------------------------- /tests/fixtures/v2/api/updateZoneRecord/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Wed, 05 Oct 2016 09:59:48 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 2400 7 | X-RateLimit-Remaining: 2393 8 | X-RateLimit-Reset: 1475662530 9 | ETag: W/"92c807156882e555af8f7a5b93350e44" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 3b630702-46a9-4449-a320-b7ac903d2127 12 | X-Runtime: 0.405810 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":5,"zone_id":"example.com","parent_id":null,"name":"","content":"mxb.example.com","ttl":3600,"priority":20,"type":"MX","regions":["global"],"system_record":false,"created_at":"2016-10-05T09:51:35Z","updated_at":"2016-10-05T09:51:35Z"}} 21 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/validation-error.http: -------------------------------------------------------------------------------- 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"]}} 19 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/whoami/success-account.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Fri, 18 Dec 2015 15:19:37 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 4000 7 | X-RateLimit-Remaining: 3991 8 | X-RateLimit-Reset: 1450451976 9 | ETag: W/"5ea6326bc1a8e83e5c156c564f2559f0" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 15a7f3a5-7ee5-4e36-ac5a-8c21c2e1fffd 12 | X-Runtime: 0.141588 13 | Strict-Transport-Security: max-age=31536000 14 | 15 | {"data":{"user":null,"account":{"id":1,"email":"example-account@example.com","plan_identifier":"dnsimple-professional","created_at":"2015-09-18T23:04:37Z","updated_at":"2016-06-09T20:03:39Z"}}} 16 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/whoami/success-user.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Fri, 18 Dec 2015 15:19:37 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 4000 7 | X-RateLimit-Remaining: 3991 8 | X-RateLimit-Reset: 1450451976 9 | ETag: W/"5ea6326bc1a8e83e5c156c564f2559f0" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 15a7f3a5-7ee5-4e36-ac5a-8c21c2e1fffd 12 | X-Runtime: 0.141588 13 | Strict-Transport-Security: max-age=31536000 14 | 15 | {"data":{"user":{"id":1,"email":"example-user@example.com","created_at":"2015-09-18T23:04:37Z","updated_at":"2016-06-09T20:03:39Z"},"account":null}} 16 | -------------------------------------------------------------------------------- /tests/fixtures/v2/api/whoami/success.http: -------------------------------------------------------------------------------- 1 | HTTP/1.1 200 OK 2 | Server: nginx 3 | Date: Fri, 18 Dec 2015 15:19:37 GMT 4 | Content-Type: application/json; charset=utf-8 5 | Connection: keep-alive 6 | X-RateLimit-Limit: 4000 7 | X-RateLimit-Remaining: 3991 8 | X-RateLimit-Reset: 1450451976 9 | ETag: W/"5ea6326bc1a8e83e5c156c564f2559f0" 10 | Cache-Control: max-age=0, private, must-revalidate 11 | X-Request-Id: 15a7f3a5-7ee5-4e36-ac5a-8c21c2e1fffd 12 | X-Runtime: 0.141588 13 | Strict-Transport-Security: max-age=31536000 14 | 15 | {"data":{"user":null,"account":{"id":1,"email":"example-account@example.com","plan_identifier":"dnsimple-professional","created_at":"2015-09-18T23:04:37Z","updated_at":"2016-06-09T20:03:39Z"}}} 16 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/account.billing_settings_update/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | X-Request-Id: f660856b-27bd-4c97-b36a-8cee494cc382 5 | Content-Length: 602 6 | User-Agent: DNSimple-Webhook-Notifier/f152781ec87b328bf9edcaa760f0e5342bdd15cf 7 | Content-Type: application/json 8 | Via: 1.1 vegur 9 | Total-Route-Time: 0 10 | Connect-Time: 0 11 | Connection: close 12 | 13 | {"data": {"account": {"id": 123, "email": "hello@example.com", "created_at": "2011-03-17T21:30:25Z", "updated_at": "2018-11-05T12:27:55Z", "plan_identifier": "dnsimple-personal-yearly"}, "billing_settings": {"address": "Via Giuseppe Dessi, 9\r\n00142 Roma\r\nItaly", "company": "Simone Carletti", "tax_identifier": "03352270049"}}, "name": "account.billing_settings_update", "actor": {"id": "1120", "entity": "user", "pretty": "hello@example.com"}, "account": {"id": 123, "display": "Personal", "identifier": "foobar"}, "api_version": "v2", "request_identifier": "50b45cb5-92bd-42e3-b6ea-f565b990ef41"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/account.remove_user/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | X-Request-Id: 25f70239-85cd-49eb-8fc7-29f8a478f906 5 | Content-Length: 577 6 | User-Agent: DNSimple-Webhook-Notifier/f152781ec87b328bf9edcaa760f0e5342bdd15cf 7 | Content-Type: application/json 8 | Via: 1.1 vegur 9 | Total-Route-Time: 0 10 | Connect-Time: 0 11 | Connection: close 12 | 13 | {"data": {"user": {"id": 1008, "email": "xxxxxxxxxx@xxxxx.xxx", "created_at": "2011-03-01T17:15:27Z", "updated_at": "2017-04-18T11:04:50Z"}, "account": {"id": 1111, "email": "xxxxxx@xxxxx.xxx", "created_at": "2012-03-16T16:02:54Z", "updated_at": "2018-11-03T18:11:09Z", "plan_identifier": "dnsimple-professional"}}, "name": "account.remove_user", "actor": {"id": "1120", "entity": "user", "pretty": "hello@example.com"}, "account": {"id": 1111, "display": "xxxxxxxx", "identifier": "xxxxxxxx"}, "api_version": "v2", "request_identifier": "8a38c969-c26e-4fc9-9572-296ab67a9022"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/account.update/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | X-Request-Id: b2432f45-199b-4a6e-9a88-1c5f1383aa8b 5 | Content-Length: 442 6 | User-Agent: DNSimple-Webhook-Notifier/f152781ec87b328bf9edcaa760f0e5342bdd15cf 7 | Content-Type: application/json 8 | Via: 1.1 vegur 9 | Total-Route-Time: 7068 10 | Connect-Time: 0 11 | Connection: close 12 | 13 | {"data": {"account": {"id": 123, "email": "hello@example.com", "created_at": "2011-03-17T21:30:25Z", "updated_at": "2018-11-05T12:27:17Z", "plan_identifier": "dnsimple-personal-yearly"}}, "name": "account.update", "actor": {"id": "1120", "entity": "user", "pretty": "hello@example.com"}, "account": {"id": 123, "display": "Personal2", "identifier": "foobar"}, "api_version": "v2", "request_identifier": "692a46c5-1117-4995-8107-9dd1ad18fa20"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/account.user_invitation_accept/example.http: -------------------------------------------------------------------------------- 1 | POST /170zjup1 HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | Content-Type: application/json 5 | User-Agent: DNSimple-Webhook-Notifier/8fd98a84516b72d5b863b27f93fcbaef61f06c03 6 | X-Request-Id: 119842bf-d239-41a8-90ac-e8aa654ea64e 7 | Connect-Time: 1 8 | Content-Length: 766 9 | Total-Route-Time: 0 10 | Via: 1.1 vegur 11 | Connection: close 12 | 13 | {"data": {"account": {"id": 1111, "email": "xxxxx@xxxxxx.xxx", "created_at": "2012-03-16T16:02:54Z", "updated_at": "2020-05-10T18:11:03Z", "plan_identifier": "professional-v1-monthly"}, "account_invitation": {"id": 3523, "email": "xxxxxx@xxxxxx.xxx", "token": "eb5763dc-0f24-420b-b7f6-c7355c8b8309", "account_id": 1111, "created_at": "2020-05-12T18:42:44Z", "updated_at": "2020-05-12T18:43:44Z", "invitation_sent_at": "2020-05-12T18:42:44Z", "invitation_accepted_at": "2020-05-12T18:43:44Z"}}, "name": "account.user_invitation_accept", "actor": {"id": "1120", "entity": "user", "pretty": "xxxxxx@xxxxxx.xxx"}, "account": {"id": 1111, "display": "xxxxxxxx", "identifier": "xxxxxxxx"}, "api_version": "v2", "request_identifier": "2fab89c6-963b-47bf-a631-cfa15f06d21f"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/account.user_invitation_revoke/example.http: -------------------------------------------------------------------------------- 1 | POST /170zjup1 HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | X-Request-Id: ac676fe3-9009-4333-a1e2-06cbc0b78f11 5 | Content-Type: application/json 6 | User-Agent: DNSimple-Webhook-Notifier/8fd98a84516b72d5b863b27f93fcbaef61f06c03 7 | Connect-Time: 1 8 | Total-Route-Time: 0 9 | Content-Length: 760 10 | Via: 1.1 vegur 11 | Connection: close 12 | 13 | {"data": {"account": {"id": 1111, "email": "xxxxx@xxxxxx.xxx", "created_at": "2012-03-16T16:02:54Z", "updated_at": "2020-05-10T18:11:03Z", "plan_identifier": "professional-v1-monthly"}, "account_invitation": {"id": 3522, "email": "xxxxxx@xxxxxx.xxx", "token": "be87d69b-a58a-43bd-9a21-aaf303829a60", "account_id": 1111, "created_at": "2020-05-12T18:42:27Z", "updated_at": "2020-05-12T18:42:27Z", "invitation_sent_at": "2020-05-12T18:42:27Z", "invitation_accepted_at": null}}, "name": "account.user_invitation_revoke", "actor": {"id": "88720", "entity": "user", "pretty": "xxxxxxxxxxxxxxxxx@xxxxxx.xxx"}, "account": {"id": 1111, "display": "xxxxxxxx", "identifier": "xxxxxxxx"}, "api_version": "v2", "request_identifier": "688bc70d-0e79-439a-bd2b-0d62cbfe56cc"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/account.user_invite/example.http: -------------------------------------------------------------------------------- 1 | POST /170zjup1 HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | X-Request-Id: 238da298-7345-474a-b4a6-81e980bc1d20 5 | Content-Type: application/json 6 | User-Agent: DNSimple-Webhook-Notifier/8fd98a84516b72d5b863b27f93fcbaef61f06c03 7 | Connect-Time: 2 8 | Total-Route-Time: 0 9 | Content-Length: 749 10 | Via: 1.1 vegur 11 | Connection: close 12 | 13 | {"data": {"account": {"id": 1111, "email": "xxxxx@xxxxxx.xxx", "created_at": "2012-03-16T16:02:54Z", "updated_at": "2020-05-10T18:11:03Z", "plan_identifier": "professional-v1-monthly"}, "account_invitation": {"id": 3523, "email": "xxxxxx@xxxxxx.xxx", "token": "eb5763dc-0f24-420b-b7f6-c7355c8b8309", "account_id": 1111, "created_at": "2020-05-12T18:42:44Z", "updated_at": "2020-05-12T18:42:44Z", "invitation_sent_at": "2020-05-12T18:42:44Z", "invitation_accepted_at": null}}, "name": "account.user_invite", "actor": {"id": "88720", "entity": "user", "pretty": "xxxxxxxxxxxxxxxxx@xxxxxx.xxx"}, "account": {"id": 1111, "display": "xxxxxxxx", "identifier": "xxxxxxxx"}, "api_version": "v2", "request_identifier": "f8f1ffa3-e49b-4ff0-a46a-41dd67094307"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/account.user_remove/example.http: -------------------------------------------------------------------------------- 1 | POST /170zjup1 HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | X-Request-Id: 99bf95d9-7d0c-41dc-bd7b-f7363e474c7b 5 | Content-Type: application/json 6 | User-Agent: DNSimple-Webhook-Notifier/8fd98a84516b72d5b863b27f93fcbaef61f06c03 7 | Content-Length: 588 8 | Connect-Time: 19 9 | Via: 1.1 vegur 10 | Total-Route-Time: 0 11 | Connection: close 12 | 13 | {"data": {"user": {"id": 1120, "email": "xxxxxx@xxxxxx.xxx", "created_at": "2011-03-17T21:30:25Z", "updated_at": "2018-11-16T12:38:34Z"}, "account": {"id": 1111, "email": "xxxxx@xxxxxx.xxx", "created_at": "2012-03-16T16:02:54Z", "updated_at": "2020-05-10T18:11:03Z", "plan_identifier": "professional-v1-monthly"}}, "name": "account.user_remove", "actor": {"id": "88720", "entity": "user", "pretty": "xxxxxxxxxxxxxxxxx@xxxxxx.xxx"}, "account": {"id": 1111, "display": "xxxxxxxx", "identifier": "xxxxxxxx"}, "api_version": "v2", "request_identifier": "c60473f0-bbed-4858-84f9-5766c8227447"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/account_invitation.accept/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Content-Length: 765 4 | X-Request-Id: 1ab3909d-1cd5-4f18-84ca-9d3c3fa22e8e 5 | Total-Route-Time: 0 6 | Via: 1.1 vegur 7 | Connect-Time: 1 8 | Accept-Encoding: gzip 9 | User-Agent: DNSimple-Webhook-Notifier/f152781ec87b328bf9edcaa760f0e5342bdd15cf 10 | Content-Type: application/json 11 | Connection: close 12 | 13 | {"data": {"account": {"id": 1111, "email": "xxxxxx@xxxxx.xxx", "created_at": "2012-03-16T16:02:54Z", "updated_at": "2018-11-03T18:11:09Z", "plan_identifier": "dnsimple-professional"}, "account_invitation": {"id": 2222, "email": "xxxxxxxxxx@xxxxx.xxx", "token": "bc982970-a6bc-4ec5-bcc3-c55e486f9b75", "account_id": 1111, "created_at": "2018-11-05T12:34:49Z", "updated_at": "2018-11-05T12:45:44Z", "invitation_sent_at": "2018-11-05T12:34:49Z", "invitation_accepted_at": "2018-11-05T12:45:44Z"}}, "name": "account_invitation.accept", "actor": {"id": "2222", "entity": "user", "pretty": "xxxxxxxxxx@xxxxx.xxx"}, "account": {"id": 1111, "display": "xxxxxxxx", "identifier": "xxxxxxxx"}, "api_version": "v2", "request_identifier": "7da0784a-0884-487e-b01b-1832b7fb45c2"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/account_invitation.create/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | X-Request-Id: ca1939e0-8fd7-4c72-9472-eeb1c4121e86 5 | User-Agent: DNSimple-Webhook-Notifier/f152781ec87b328bf9edcaa760f0e5342bdd15cf 6 | Content-Type: application/json 7 | Content-Length: 744 8 | Via: 1.1 vegur 9 | Total-Route-Time: 0 10 | Connect-Time: 0 11 | Connection: close 12 | 13 | {"data": {"account": {"id": 1111, "email": "xxxxxx@xxxxx.xxx", "created_at": "2012-03-16T16:02:54Z", "updated_at": "2018-11-03T18:11:09Z", "plan_identifier": "dnsimple-professional"}, "account_invitation": {"id": 2222, "email": "xxxxxxxxxx@xxxxx.xxx", "token": "bc982970-a6bc-4ec5-bcc3-c55e486f9b75", "account_id": 1111, "created_at": "2018-11-05T12:34:49Z", "updated_at": "2018-11-05T12:34:49Z", "invitation_sent_at": "2018-11-05T12:34:49Z", "invitation_accepted_at": null}}, "name": "account_invitation.create", "actor": {"id": "1120", "entity": "user", "pretty": "hello@example.com"}, "account": {"id": 5623, "display": "xxxxxxxx", "identifier": "xxxxxxxx"}, "api_version": "v2", "request_identifier": "e5656034-c750-4269-9d47-9b2034b72f41"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/contact.create/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | X-Request-Id: 05287714-5a10-4265-904a-63b112f33856 5 | User-Agent: DNSimple-Webhook-Notifier/f152781ec87b328bf9edcaa760f0e5342bdd15cf 6 | Content-Type: application/json 7 | Content-Length: 679 8 | Via: 1.1 vegur 9 | Total-Route-Time: 0 10 | Connect-Time: 1 11 | Connection: close 12 | 13 | {"data": {"contact": {"id": 40099, "fax": "", "city": "Rome", "email": "example@example.com", "label": "Test", "phone": "+1 339 1111111", "country": "IT", "address1": "Some Street", "address2": "", "job_title": "", "last_name": "Bar", "account_id": 123, "created_at": "2018-11-05T12:32:42Z", "first_name": "Foo", "updated_at": "2018-11-05T12:32:42Z", "postal_code": "12345", "state_province": "RM", "organization_name": ""}}, "name": "contact.create", "actor": {"id": "1120", "entity": "user", "pretty": "hello@example.com"}, "account": {"id": 123, "display": "Personal", "identifier": "foobar"}, "api_version": "v2", "request_identifier": "948d2df3-92bb-4352-a536-1bc5119694c7"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/contact.delete/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | X-Request-Id: 36df2ab6-8108-42e4-8689-ababd10ea3a6 5 | User-Agent: DNSimple-Webhook-Notifier/f152781ec87b328bf9edcaa760f0e5342bdd15cf 6 | Content-Type: application/json 7 | Content-Length: 680 8 | Via: 1.1 vegur 9 | Total-Route-Time: 0 10 | Connect-Time: 0 11 | Connection: close 12 | 13 | {"data": {"contact": {"id": 40099, "fax": "", "city": "Rome", "email": "example@example.com", "label": "Test", "phone": "+39 339 1111111", "country": "IT", "address1": "Some Street", "address2": "", "job_title": "", "last_name": "Bar", "account_id": 123, "created_at": "2018-11-05T12:32:42Z", "first_name": "Foo", "updated_at": "2018-11-05T12:32:56Z", "postal_code": "12345", "state_province": "RM", "organization_name": ""}}, "name": "contact.delete", "actor": {"id": "1120", "entity": "user", "pretty": "hello@example.com"}, "account": {"id": 123, "display": "Personal", "identifier": "foobar"}, "api_version": "v2", "request_identifier": "9d8b58a5-986c-4f0c-b03e-f1a8e512a639"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/contact.update/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | X-Request-Id: 02872158-a138-4538-bdb2-4963b074fa82 5 | Content-Length: 680 6 | User-Agent: DNSimple-Webhook-Notifier/f152781ec87b328bf9edcaa760f0e5342bdd15cf 7 | Content-Type: application/json 8 | Via: 1.1 vegur 9 | Total-Route-Time: 0 10 | Connect-Time: 0 11 | Connection: close 12 | 13 | {"data": {"contact": {"id": 40099, "fax": "", "city": "Rome", "email": "example@example.com", "label": "Test", "phone": "+39 339 1111111", "country": "IT", "address1": "Some Street", "address2": "", "job_title": "", "last_name": "Bar", "account_id": 123, "created_at": "2018-11-05T12:32:42Z", "first_name": "Foo", "updated_at": "2018-11-05T12:32:56Z", "postal_code": "12345", "state_province": "RM", "organization_name": ""}}, "name": "contact.update", "actor": {"id": "1120", "entity": "user", "pretty": "hello@example.com"}, "account": {"id": 123, "display": "Personal", "identifier": "foobar"}, "api_version": "v2", "request_identifier": "c1cbb968-6e0f-4fb6-8e6c-06581f24dc25"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/dnssec.create/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Connect-Time: 0 4 | X-Request-Id: 7c5f265a-3498-4433-acaa-181cd2db9028 5 | Via: 1.1 vegur 6 | Total-Route-Time: 0 7 | User-Agent: DNSimple-Webhook-Notifier/bf310d84dcc4ea2cd6befb18dd800be75e4bf623 8 | Accept-Encoding: gzip 9 | Content-Type: application/json 10 | Content-Length: 380 11 | Connection: close 12 | 13 | {"data": {"dnssec": {"enabled": true, "created_at": "2019-06-24T19:17:14Z", "updated_at": "2019-06-24T19:17:14Z"}}, "name": "dnssec.create", "actor": {"id": "88720", "entity": "user", "pretty": "xxxxxxxxxxxxxxxxx@xxxxxx.xxx"}, "account": {"id": 111, "display": "Personal", "identifier": "xxxxxx"}, "api_version": "v2", "request_identifier": "1ea9b242-2570-41df-9db4-39f981ee2937"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/dnssec.delete/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Connect-Time: 0 4 | X-Request-Id: 528ebdd6-7d20-4e50-9927-9dd1cd833d4d 5 | Total-Route-Time: 0 6 | User-Agent: DNSimple-Webhook-Notifier/bf310d84dcc4ea2cd6befb18dd800be75e4bf623 7 | Accept-Encoding: gzip 8 | Via: 1.1 vegur 9 | Content-Type: application/json 10 | Content-Length: 380 11 | Connection: close 12 | 13 | {"data": {"dnssec": {"enabled": true, "created_at": "2019-01-31T17:31:05Z", "updated_at": "2019-01-31T17:31:05Z"}}, "name": "dnssec.delete", "actor": {"id": "88720", "entity": "user", "pretty": "xxxxxxxxxxxxxxxxx@xxxxxx.xxx"}, "account": {"id": 111, "display": "Personal", "identifier": "xxxxxx"}, "api_version": "v2", "request_identifier": "94f8ac92-9b40-4ba7-a83d-311cda8daba8"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/dnssec.rotation_complete/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Content-Type: application/json 4 | User-Agent: DNSimple-Webhook-Notifier/f152781ec87b328bf9edcaa760f0e5342bdd15cf 5 | Total-Route-Time: 0 6 | Connect-Time: 0 7 | Via: 1.1 vegur 8 | X-Request-Id: 820e9b9f-3312-4afc-b384-898eefa87e88 9 | Content-Length: 662 10 | Accept-Encoding: gzip 11 | Connection: close 12 | 13 | {"data": {"dnssec": {"enabled": true, "created_at": "2017-07-19T18:52:55Z", "updated_at": "2017-07-19T18:52:55Z"}, "delegation_signer_record": {"id": 4662, "digest": "EF1D343203E03F1C98120646971F7B96806B759B66622F0A224551DA1A1EFC9A", "keytag": "51364", "algorithm": "8", "domain_id": 252645, "created_at": "2018-07-02T22:00:00Z", "updated_at": "2018-07-02T22:00:00Z", "digest_type": "2"}}, "name": "dnssec.rotation_complete", "actor": {"id": "system", "entity": "dnsimple", "pretty": "support@dnsimple.com"}, "account": {"id": 123, "display": "Personal", "identifier": "foobar"}, "api_version": "v2", "request_identifier": "efae385b-2caa-4861-848a-55d0c5a72e26"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/dnssec.rotation_start/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Content-Type: application/json 4 | User-Agent: DNSimple-Webhook-Notifier/f152781ec87b328bf9edcaa760f0e5342bdd15cf 5 | Total-Route-Time: 6006 6 | Connect-Time: 1 7 | Via: 1.1 vegur 8 | X-Request-Id: 02449375-8d36-45ba-9e73-cdb7615388f0 9 | Content-Length: 658 10 | Accept-Encoding: gzip 11 | Connection: close 12 | 13 | {"data": {"dnssec": {"enabled": true, "created_at": "2017-02-06T20:15:05Z", "updated_at": "2017-02-06T20:15:05Z"}, "delegation_signer_record": {"id": 6037, "digest": "BD9D898E92D0F668E6BDBC5E79D52E5C3BAB12823A6EEE8C8B6DC633007DFABC", "keytag": "27472", "algorithm": "8", "domain_id": 41557, "created_at": "2018-10-09T02:00:02Z", "updated_at": "2018-10-09T02:00:02Z", "digest_type": "2"}}, "name": "dnssec.rotation_start", "actor": {"id": "system", "entity": "dnsimple", "pretty": "support@dnsimple.com"}, "account": {"id": 123, "display": "Personal", "identifier": "foobar"}, "api_version": "v2", "request_identifier": "b2ddc716-f621-418c-a6a9-6a2c2d7acd27"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/domain.auto_renewal_disable/example.http: -------------------------------------------------------------------------------- 1 | POST / HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | Content-Type: application/json 5 | User-Agent: DNSimple-Webhook-Notifier/8fd98a84516b72d5b863b27f93fcbaef61f06c03 6 | Content-Length: 622 7 | Connection: keep-alive 8 | 9 | {"data": {"domain": {"id": 181984, "name": "example-alpha.com", "state": "registered", "account_id": 1385, "auto_renew": false, "created_at": "2020-06-04T19:15:14Z", "expires_at": "2021-06-05T02:15:00Z", "expires_on": "2021-06-05", "updated_at": "2020-06-04T20:46:16Z", "unicode_name": "example-alpha.com", "private_whois": false, "registrant_id": 2715}}, "name": "domain.auto_renewal_disable", "actor": {"id": "1331", "entity": "user", "pretty": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "account": {"id": 1385, "display": "xxxxxxx-xxxxxxx-xxxxxxx", "identifier": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "api_version": "v2", "request_identifier": "abf9d6d1-ea69-45f8-85c8-de32b8c6e845"} 10 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/domain.auto_renewal_enable/example.http: -------------------------------------------------------------------------------- 1 | POST / HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | Content-Type: application/json 5 | User-Agent: DNSimple-Webhook-Notifier/8fd98a84516b72d5b863b27f93fcbaef61f06c03 6 | Content-Length: 620 7 | Connection: keep-alive 8 | 9 | {"data": {"domain": {"id": 181984, "name": "example-alpha.com", "state": "registered", "account_id": 1385, "auto_renew": true, "created_at": "2020-06-04T19:15:14Z", "expires_at": "2021-06-05T02:15:00Z", "expires_on": "2021-06-05", "updated_at": "2020-06-04T20:43:47Z", "unicode_name": "example-alpha.com", "private_whois": false, "registrant_id": 2715}}, "name": "domain.auto_renewal_enable", "actor": {"id": "1331", "entity": "user", "pretty": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "account": {"id": 1385, "display": "xxxxxxx-xxxxxxx-xxxxxxx", "identifier": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "api_version": "v2", "request_identifier": "680ac620-0e8b-43d1-a3c1-668d61094fde"} 10 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/domain.create/example.http: -------------------------------------------------------------------------------- 1 | POST / HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | Content-Type: application/json 5 | User-Agent: DNSimple-Webhook-Notifier/8fd98a84516b72d5b863b27f93fcbaef61f06c03 6 | Content-Length: 579 7 | Connection: keep-alive 8 | 9 | {"data": {"domain": {"id": 181985, "name": "example-beta.com", "state": "hosted", "account_id": 1385, "auto_renew": false, "created_at": "2020-06-04T19:47:05Z", "expires_at": null, "expires_on": null, "updated_at": "2020-06-04T19:47:05Z", "unicode_name": "example-beta.com", "private_whois": false, "registrant_id": null}}, "name": "domain.create", "actor": {"id": "1385", "entity": "account", "pretty": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "account": {"id": 1385, "display": "xxxxxxx-xxxxxxx-xxxxxxx", "identifier": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "api_version": "v2", "request_identifier": "35e04e69-bec9-46e2-bcf1-1d5a469d82b6"} 10 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/domain.delegation_change/example.http: -------------------------------------------------------------------------------- 1 | POST / HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | Content-Type: application/json 5 | User-Agent: DNSimple-Webhook-Notifier/8fd98a84516b72d5b863b27f93fcbaef61f06c03 6 | Content-Length: 696 7 | Connection: keep-alive 8 | 9 | {"data": {"domain": {"id": 181984, "name": "example-alpha.com", "state": "registered", "account_id": 1385, "auto_renew": false, "created_at": "2020-06-04T19:15:14Z", "expires_at": "2021-06-05T02:15:00Z", "expires_on": "2021-06-05", "updated_at": "2020-06-04T19:15:21Z", "unicode_name": "example-alpha.com", "private_whois": true, "registrant_id": 2715}, "name_servers": ["ns1.dnsimple.com", "ns2.dnsimple.com", "ns3.dnsimple.com"]}, "name": "domain.delegation_change", "actor": {"id": "1331", "entity": "user", "pretty": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "account": {"id": 1385, "display": "xxxxxxx-xxxxxxx-xxxxxxx", "identifier": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "api_version": "v2", "request_identifier": "e078a72f-c744-486d-932c-cee8554716ed"} 10 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/domain.delete/example.http: -------------------------------------------------------------------------------- 1 | POST / HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | Content-Type: application/json 5 | User-Agent: DNSimple-Webhook-Notifier/8fd98a84516b72d5b863b27f93fcbaef61f06c03 6 | Content-Length: 608 7 | Connection: keep-alive 8 | 9 | {"data": {"domain": {"id": 181986, "name": "example-delta.com", "state": "registered", "account_id": 1385, "auto_renew": false, "created_at": "2020-06-04T20:48:23Z", "expires_at": "2021-06-05T03:48:00Z", "expires_on": "2021-06-05", "updated_at": "2020-06-04T20:48:30Z", "unicode_name": "example-delta.com", "private_whois": false, "registrant_id": 2715}}, "name": "domain.delete", "actor": {"id": "1331", "entity": "user", "pretty": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "account": {"id": 1385, "display": "xxxxxxx-xxxxxxx-xxxxxxx", "identifier": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "api_version": "v2", "request_identifier": "52888db5-ac52-4ccf-b211-4e1785a7524f"} 10 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/domain.register/example.http: -------------------------------------------------------------------------------- 1 | POST / HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | Content-Type: application/json 5 | User-Agent: DNSimple-Webhook-Notifier/8fd98a84516b72d5b863b27f93fcbaef61f06c03 6 | Content-Length: 623 7 | Connection: keep-alive 8 | 9 | {"data": {"domain": {"id": 181984, "name": "example-alpha.com", "state": "registered", "account_id": 1385, "auto_renew": false, "created_at": "2020-06-04T19:15:14Z", "expires_at": "2021-06-05T02:15:00Z", "expires_on": "2021-06-05", "updated_at": "2020-06-04T19:15:21Z", "unicode_name": "example-alpha.com", "private_whois": false, "registrant_id": 2715}}, "name": "domain.register", "actor": {"id": "system", "entity": "dnsimple", "pretty": "support@dnsimple.com"}, "account": {"id": 1385, "display": "xxxxxxx-xxxxxxx-xxxxxxx", "identifier": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "api_version": "v2", "request_identifier": "a57e7761-3cfd-42a1-ba47-9ac89f5e69c3"} 10 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/domain.register/status-started.http: -------------------------------------------------------------------------------- 1 | POST / HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | Content-Type: application/json 5 | User-Agent: DNSimple-Webhook-Notifier/8fd98a84516b72d5b863b27f93fcbaef61f06c03 6 | Content-Length: 591 7 | Connection: keep-alive 8 | 9 | {"data": {"domain": {"id": 181984, "name": "example-alpha.com", "state": "hosted", "account_id": 1385, "auto_renew": false, "created_at": "2020-06-04T19:15:14Z", "expires_at": null, "expires_on": null, "updated_at": "2020-06-04T19:15:14Z", "unicode_name": "example-alpha.com", "private_whois": false, "registrant_id": 2715}}, "name": "domain.register:started", "actor": {"id": "1385", "entity": "account", "pretty": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "account": {"id": 1385, "display": "xxxxxxx-xxxxxxx-xxxxxxx", "identifier": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "api_version": "v2", "request_identifier": "7bd379d8-8572-4ccd-9084-e1a842cd6012"} 10 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/domain.registrant_change/example.http: -------------------------------------------------------------------------------- 1 | POST / HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | Content-Type: application/json 5 | User-Agent: DNSimple-Webhook-Notifier/8fd98a84516b72d5b863b27f93fcbaef61f06c03 6 | Content-Length: 1070 7 | Connection: keep-alive 8 | 9 | {"data": {"domain": {"id": 181984, "name": "example-alpha.com", "state": "registered", "account_id": 1385, "auto_renew": false, "created_at": "2020-06-04T19:15:14Z", "expires_at": "2021-06-05T02:15:00Z", "expires_on": "2021-06-05", "updated_at": "2020-06-04T21:04:17Z", "unicode_name": "example-alpha.com", "private_whois": false, "registrant_id": 2716}, "registrant": {"id": 2716, "fax": "", "city": "New York", "label": "new_contact", "phone": "+1 202-555-0191", "country": "US", "address1": "Test St", "address2": "", "job_title": "", "last_name": "Corp 2", "account_id": 1385, "created_at": "2020-06-04T21:03:47.226Z", "first_name": "DNSimple", "updated_at": "2020-06-04T21:03:47.226Z", "postal_code": "14801", "email_address": "support@dnsimple.com", "state_province": "NY", "organization_name": ""}}, "name": "domain.registrant_change", "actor": {"id": "1331", "entity": "user", "pretty": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "account": {"id": 1385, "display": "xxxxxxx-xxxxxxx-xxxxxxx", "identifier": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "api_version": "v2", "request_identifier": "9ef5f6f7-fa00-4d31-a1dc-5f80ae783d93"} 10 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/domain.renew/example.http: -------------------------------------------------------------------------------- 1 | POST / HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | Content-Type: application/json 5 | User-Agent: DNSimple-Webhook-Notifier/8fd98a84516b72d5b863b27f93fcbaef61f06c03 6 | Content-Length: 685 7 | Connection: keep-alive 8 | 9 | {"data": {"auto": true, "domain": {"id": 181984, "name": "example-alpha.com", "state": "registered", "account_id": 1385, "auto_renew": true, "created_at": "2020-06-04T19:15:14Z", "expires_at": "2021-06-05T02:15:00Z", "expires_on": "2021-06-05", "updated_at": "2020-06-04T19:15:21Z", "unicode_name": "example-alpha.com", "private_whois": false, "registrant_id": 2715}}, "name": "domain.renew", "actor": {"id": "system", "entity": "dnsimple", "pretty": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "account": {"id": 1385, "display": "xxxxxxx-xxxxxxx-xxxxxxx", "identifier": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "api_version": "v2", "request_identifier": "b02026a9-bb60-4c80-a1da-310eef08dd53"} 10 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/domain.resolution_disable/example.http: -------------------------------------------------------------------------------- 1 | POST / HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | Content-Type: application/json 5 | User-Agent: DNSimple-Webhook-Notifier/8fd98a84516b72d5b863b27f93fcbaef61f06c03 6 | Content-Length: 619 7 | Connection: keep-alive 8 | 9 | {"data": {"domain": {"id": 181984, "name": "example-alpha.com", "state": "registered", "account_id": 1385, "auto_renew": false, "created_at": "2020-06-04T19:15:14Z", "expires_at": "2021-06-05T02:15:00Z", "expires_on": "2021-06-05", "updated_at": "2020-06-04T20:34:21Z", "unicode_name": "example-alpha.com", "private_whois": true, "registrant_id": 2715}}, "name": "domain.resolution_disable", "actor": {"id": "1331", "entity": "user", "pretty": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "account": {"id": 1385, "display": "xxxxxxx-xxxxxxx-xxxxxxx", "identifier": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "api_version": "v2", "request_identifier": "472542bc-c8bf-4638-99ea-ad22bc0b810f"} 10 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/domain.resolution_enable/example.http: -------------------------------------------------------------------------------- 1 | POST / HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | Content-Type: application/json 5 | User-Agent: DNSimple-Webhook-Notifier/8fd98a84516b72d5b863b27f93fcbaef61f06c03 6 | Content-Length: 618 7 | Connection: keep-alive 8 | 9 | {"data": {"domain": {"id": 181984, "name": "example-alpha.com", "state": "registered", "account_id": 1385, "auto_renew": false, "created_at": "2020-06-04T19:15:14Z", "expires_at": "2021-06-05T02:15:00Z", "expires_on": "2021-06-05", "updated_at": "2020-06-04T20:37:32Z", "unicode_name": "example-alpha.com", "private_whois": true, "registrant_id": 2715}}, "name": "domain.resolution_enable", "actor": {"id": "1331", "entity": "user", "pretty": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "account": {"id": 1385, "display": "xxxxxxx-xxxxxxx-xxxxxxx", "identifier": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "api_version": "v2", "request_identifier": "92a1c588-1281-408b-8e1b-14d766464e34"} 10 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/email_forward.create/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | X-Request-Id: 5f262ad7-c67d-4e27-a9ed-0f127d974a77 5 | User-Agent: DNSimple-Webhook-Notifier/f152781ec87b328bf9edcaa760f0e5342bdd15cf 6 | Content-Type: application/json 7 | Connect-Time: 1 8 | Via: 1.1 vegur 9 | Content-Length: 460 10 | Total-Route-Time: 0 11 | Connection: close 12 | 13 | {"data": {"email_forward": {"id": 30187, "to": "example@example.com", "from": "example@example.zone", "domain_id": 415995, "created_at": "2018-11-07T17:20:39Z", "updated_at": "2018-11-07T17:20:39Z"}}, "name": "email_forward.create", "actor": {"id": "1120", "entity": "user", "pretty": "xxxxx@xxxxxxx.xxx"}, "account": {"id": 111, "display": "Personal", "identifier": "xxxxxx"}, "api_version": "v2", "request_identifier": "46a0c6b7-695c-4650-82d3-c6612599fe76"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/email_forward.delete/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Content-Length: 455 4 | Total-Route-Time: 0 5 | Via: 1.1 vegur 6 | Accept-Encoding: gzip 7 | X-Request-Id: e459cabf-de4e-4288-8e2b-09799e1415dd 8 | User-Agent: DNSimple-Webhook-Notifier/f152781ec87b328bf9edcaa760f0e5342bdd15cf 9 | Content-Type: application/json 10 | Connect-Time: 0 11 | Connection: close 12 | 13 | {"data": {"email_forward": {"id": 30187, "to": "example@example.com", "from": ".*@example.zone", "domain_id": 415995, "created_at": "2018-11-07T17:20:39Z", "updated_at": "2018-11-07T17:20:53Z"}}, "name": "email_forward.delete", "actor": {"id": "1120", "entity": "user", "pretty": "xxxxx@xxxxxxx.xxx"}, "account": {"id": 111, "display": "Personal", "identifier": "xxxxxx"}, "api_version": "v2", "request_identifier": "8ab69f9d-1de9-4425-9755-50cc4f10f5a8"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/email_forward.update/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Content-Length: 455 4 | Accept-Encoding: gzip 5 | X-Request-Id: 42f14e6a-21e4-4942-9556-682298b5a852 6 | User-Agent: DNSimple-Webhook-Notifier/f152781ec87b328bf9edcaa760f0e5342bdd15cf 7 | Content-Type: application/json 8 | Connect-Time: 0 9 | Via: 1.1 vegur 10 | Total-Route-Time: 1 11 | Connection: close 12 | 13 | {"data": {"email_forward": {"id": 30187, "to": "example@example.com", "from": ".*@example.zone", "domain_id": 415995, "created_at": "2018-11-07T17:20:39Z", "updated_at": "2018-11-07T17:20:53Z"}}, "name": "email_forward.update", "actor": {"id": "1120", "entity": "user", "pretty": "xxxxx@xxxxxxx.xxx"}, "account": {"id": 111, "display": "Personal", "identifier": "xxxxxx"}, "api_version": "v2", "request_identifier": "83a53e35-9277-493f-af4d-a06a35167412"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/subscription.renew/state-failed.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Content-Type: application/json 4 | Total-Route-Time: 7210 5 | Content-Length: 446 6 | X-Request-Id: e15222f0-83fd-48ae-ab6f-67c8f3198dcc 7 | Via: 1.1 vegur 8 | Connect-Time: 1 9 | Accept-Encoding: gzip 10 | User-Agent: DNSimple-Webhook-Notifier/8b16040b4b0e3b18a84c6a300a85119cf638980a 11 | Connection: close 12 | 13 | {"data": {"subscription": {"id": 11111, "state": "subscribed", "plan_name": "Professional", "created_at": "2018-12-20T13:40:26Z", "updated_at": "2019-04-06T08:57:01Z"}}, "name": "subscription.renew:failed", "actor": {"id": "system", "entity": "dnsimple", "pretty": "support@dnsimple.com"}, "account": {"id": 1111, "display": "xxxxxxxx", "identifier": "xxxxxxxx"}, "api_version": "v2", "request_identifier": "e08f7b64-81b2-454c-a090-ee012cbf2141"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/webhook.create/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | X-Request-Id: 7c7d1a66-efc6-4818-9861-ec0ed1a1ddb4 5 | Content-Length: 350 6 | User-Agent: DNSimple-Webhook-Notifier/f152781ec87b328bf9edcaa760f0e5342bdd15cf 7 | Content-Type: application/json 8 | Via: 1.1 vegur 9 | Total-Route-Time: 0 10 | Connect-Time: 0 11 | Connection: close 12 | 13 | {"data": {"webhook": {"id": 274, "url": "https://xxxxxx-xxxxxxx-00000.herokuapp.com/xxxxxxxx"}}, "name": "webhook.create", "actor": {"id": "1120", "entity": "user", "pretty": "hello@example.com"}, "account": {"id": 123, "display": "Personal", "identifier": "foobar"}, "api_version": "v2", "request_identifier": "f8330285-724f-4395-84ee-063e390d8162"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/webhook.delete/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | X-Request-Id: 4e4b2552-9c80-4437-aea8-b09e8ceb0321 5 | User-Agent: DNSimple-Webhook-Notifier/f152781ec87b328bf9edcaa760f0e5342bdd15cf 6 | Content-Type: application/json 7 | Content-Length: 350 8 | Via: 1.1 vegur 9 | Total-Route-Time: 0 10 | Connect-Time: 0 11 | Connection: close 12 | 13 | {"data": {"webhook": {"id": 215, "url": "https://xxxxxx-xxxxxxx-00000.herokuapp.com/xxxxxxxx"}}, "name": "webhook.delete", "actor": {"id": "1120", "entity": "user", "pretty": "hello@example.com"}, "account": {"id": 123, "display": "Personal", "identifier": "foobar"}, "api_version": "v2", "request_identifier": "4d6f9084-850d-444d-a998-455a59f830d5"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/whois_privacy.disable/example.http: -------------------------------------------------------------------------------- 1 | POST / HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | Content-Type: application/json 5 | User-Agent: DNSimple-Webhook-Notifier/8fd98a84516b72d5b863b27f93fcbaef61f06c03 6 | Content-Length: 789 7 | Connection: keep-alive 8 | 9 | {"data": {"domain": {"id": 181984, "name": "example-alpha.com", "state": "registered", "account_id": 1385, "auto_renew": false, "created_at": "2020-06-04T19:15:14Z", "expires_at": "2021-06-05T02:15:00Z", "expires_on": "2021-06-05", "updated_at": "2020-06-04T20:37:32Z", "unicode_name": "example-alpha.com", "private_whois": false, "registrant_id": 2715}, "whois_privacy": {"id": 902, "enabled": false, "domain_id": 181984, "created_at": "2020-06-04T20:01:27Z", "expires_on": "2022-06-04", "updated_at": "2020-06-04T20:41:24Z"}}, "name": "whois_privacy.disable", "actor": {"id": "1331", "entity": "user", "pretty": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "account": {"id": 1385, "display": "xxxxxxx-xxxxxxx-xxxxxxx", "identifier": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "api_version": "v2", "request_identifier": "5a3d96eb-bf52-40c3-830c-38bc11b47244"} 10 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/whois_privacy.enable/example.http: -------------------------------------------------------------------------------- 1 | POST / HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | Content-Type: application/json 5 | User-Agent: DNSimple-Webhook-Notifier/8fd98a84516b72d5b863b27f93fcbaef61f06c03 6 | Content-Length: 780 7 | Connection: keep-alive 8 | 9 | {"data": {"domain": {"id": 181984, "name": "example-alpha.com", "state": "registered", "account_id": 1385, "auto_renew": false, "created_at": "2020-06-04T19:15:14Z", "expires_at": "2021-06-05T02:15:00Z", "expires_on": "2021-06-05", "updated_at": "2020-06-04T19:15:21Z", "unicode_name": "example-alpha.com", "private_whois": false, "registrant_id": 2715}, "whois_privacy": {"id": 902, "enabled": false, "domain_id": 181984, "created_at": "2020-06-04T20:01:27Z", "expires_on": null, "updated_at": "2020-06-04T20:01:27Z"}}, "name": "whois_privacy.enable", "actor": {"id": "1331", "entity": "user", "pretty": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "account": {"id": 1385, "display": "xxxxxxx-xxxxxxx-xxxxxxx", "identifier": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "api_version": "v2", "request_identifier": "2708ba50-c35d-4339-a7b6-be790fe1aebc"} 10 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/whois_privacy.purchase/example.http: -------------------------------------------------------------------------------- 1 | POST / HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | Content-Type: application/json 5 | User-Agent: DNSimple-Webhook-Notifier/8fd98a84516b72d5b863b27f93fcbaef61f06c03 6 | Content-Length: 782 7 | Connection: keep-alive 8 | 9 | {"data": {"domain": {"id": 181984, "name": "example-alpha.com", "state": "registered", "account_id": 1385, "auto_renew": false, "created_at": "2020-06-04T19:15:14Z", "expires_at": "2021-06-05T02:15:00Z", "expires_on": "2021-06-05", "updated_at": "2020-06-04T19:15:21Z", "unicode_name": "example-alpha.com", "private_whois": false, "registrant_id": 2715}, "whois_privacy": {"id": 902, "enabled": false, "domain_id": 181984, "created_at": "2020-06-04T20:01:27Z", "expires_on": null, "updated_at": "2020-06-04T20:01:27Z"}}, "name": "whois_privacy.purchase", "actor": {"id": "1331", "entity": "user", "pretty": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "account": {"id": 1385, "display": "xxxxxxx-xxxxxxx-xxxxxxx", "identifier": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "api_version": "v2", "request_identifier": "c04fefd7-d588-4efd-996e-cd457736abe1"} 10 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/whois_privacy.renew/example.http: -------------------------------------------------------------------------------- 1 | POST / HTTP/1.1 2 | Host: example.com 3 | Accept-Encoding: gzip 4 | Content-Type: application/json 5 | User-Agent: DNSimple-Webhook-Notifier/8fd98a84516b72d5b863b27f93fcbaef61f06c03 6 | Content-Length: 798 7 | Connection: keep-alive 8 | 9 | {"data": {"domain": {"id": 181984, "name": "example-alpha.com", "state": "registered", "account_id": 1385, "auto_renew": false, "created_at": "2020-06-04T19:15:14Z", "expires_at": "2021-06-05T02:15:00Z", "expires_on": "2021-06-05", "updated_at": "2020-06-04T19:15:21Z", "unicode_name": "example-alpha.com", "private_whois": true, "registrant_id": 2715}, "whois_privacy": {"id": 902, "enabled": true, "domain_id": 181984, "created_at": "2020-06-04T20:01:27Z", "expires_on": "2022-06-04", "updated_at": "2020-06-04T20:15:23Z"}}, "name": "whois_privacy.renew", "actor": {"id": "system", "entity": "dnsimple", "pretty": "support@dnsimple.com"}, "account": {"id": 1385, "display": "xxxxxxx-xxxxxxx-xxxxxxx", "identifier": "xxxxxxx-xxxxxxx-xxxxxxx@xxxxx.com"}, "api_version": "v2", "request_identifier": "6164c3bb-f9df-4e00-b560-e122b19e25f7"} 10 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/zone.create/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Content-Type: application/json 4 | Content-Length: 422 5 | User-Agent: DNSimple-Webhook-Notifier/f152781ec87b328bf9edcaa760f0e5342bdd15cf 6 | Connect-Time: 1 7 | Via: 1.1 vegur 8 | Accept-Encoding: gzip 9 | X-Request-Id: 8e71cd39-3380-486f-b2ff-b0588e677848 10 | Total-Route-Time: 0 11 | Connection: close 12 | 13 | {"data": {"zone": {"id": 360322, "name": "example.zone", "reverse": false, "account_id": 123, "created_at": "2018-11-04T20:51:45Z", "updated_at": "2018-11-04T20:51:45Z"}}, "name": "zone.create", "actor": {"id": "1120", "entity": "user", "pretty": "hello@example.com"}, "account": {"id": 123, "display": "Personal", "identifier": "foobar"}, "api_version": "v2", "request_identifier": "154dff3d-4b31-496a-9f39-a8a2b57bad9b"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/zone.delete/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Content-Type: application/json 4 | Content-Length: 422 5 | User-Agent: DNSimple-Webhook-Notifier/f152781ec87b328bf9edcaa760f0e5342bdd15cf 6 | Connect-Time: 0 7 | Via: 1.1 vegur 8 | Accept-Encoding: gzip 9 | X-Request-Id: cc73ccd6-bb72-4cc9-9f95-6d3010595fdf 10 | Total-Route-Time: 0 11 | Connection: close 12 | 13 | {"data": {"zone": {"id": 360320, "name": "example.zone", "reverse": false, "account_id": 123, "created_at": "2018-11-04T20:51:12Z", "updated_at": "2018-11-04T20:51:12Z"}}, "name": "zone.delete", "actor": {"id": "1120", "entity": "user", "pretty": "hello@example.com"}, "account": {"id": 123, "display": "Personal", "identifier": "foobar"}, "api_version": "v2", "request_identifier": "0c783469-92c7-4819-90b6-62ef7785abc5"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/zone_record.create/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Content-Type: application/json 4 | Content-Length: 550 5 | User-Agent: DNSimple-Webhook-Notifier/f152781ec87b328bf9edcaa760f0e5342bdd15cf 6 | Connect-Time: 0 7 | Via: 1.1 vegur 8 | Accept-Encoding: gzip 9 | X-Request-Id: a7b32c49-6211-4f79-8953-a232f94c44c0 10 | Total-Route-Time: 0 11 | Connection: close 12 | 13 | {"data": {"zone_record": {"id": 14762434, "ttl": 3600, "name": "", "type": "A", "content": "127.0.0.1", "regions": ["global"], "zone_id": "example.zone", "priority": null, "parent_id": null, "created_at": "2018-11-04T20:52:21Z", "updated_at": "2018-11-04T20:52:21Z", "system_record": false}}, "name": "zone_record.create", "actor": {"id": "1120", "entity": "user", "pretty": "hello@example.com"}, "account": {"id": 123, "display": "Personal", "identifier": "foobar"}, "api_version": "v2", "request_identifier": "42285223-dc74-4f03-89bf-171e3c0a17b4"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/zone_record.delete/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Content-Type: application/json 4 | Via: 1.1 vegur 5 | Content-Length: 553 6 | User-Agent: DNSimple-Webhook-Notifier/f152781ec87b328bf9edcaa760f0e5342bdd15cf 7 | Connect-Time: 0 8 | Accept-Encoding: gzip 9 | X-Request-Id: 738b17db-2ef0-4c9c-9555-a0ff102d0774 10 | Total-Route-Time: 0 11 | Connection: close 12 | 13 | {"data": {"zone_record": {"id": 14762434, "ttl": 3600, "name": "www", "type": "A", "content": "127.0.0.1", "regions": ["global"], "zone_id": "example.zone", "priority": null, "parent_id": null, "created_at": "2018-11-04T20:52:21Z", "updated_at": "2018-11-04T20:52:34Z", "system_record": false}}, "name": "zone_record.delete", "actor": {"id": "1120", "entity": "user", "pretty": "hello@example.com"}, "account": {"id": 123, "display": "Personal", "identifier": "foobar"}, "api_version": "v2", "request_identifier": "b633e089-8d5c-49e3-8459-f1c8ac16f66e"} 14 | -------------------------------------------------------------------------------- /tests/fixtures/v2/webhooks/zone_record.update/example.http: -------------------------------------------------------------------------------- 1 | POST /1djlwbe1 HTTP/1.1 2 | Host: example.com 3 | Content-Type: application/json 4 | Content-Length: 553 5 | User-Agent: DNSimple-Webhook-Notifier/f152781ec87b328bf9edcaa760f0e5342bdd15cf 6 | Connect-Time: 0 7 | Via: 1.1 vegur 8 | Accept-Encoding: gzip 9 | X-Request-Id: d75c6962-5e68-45a2-afe2-3943dd8637fa 10 | Total-Route-Time: 0 11 | Connection: close 12 | 13 | {"data": {"zone_record": {"id": 14762434, "ttl": 3600, "name": "www", "type": "A", "content": "127.0.0.1", "regions": ["global"], "zone_id": "example.zone", "priority": null, "parent_id": null, "created_at": "2018-11-04T20:52:21Z", "updated_at": "2018-11-04T20:52:34Z", "system_record": false}}, "name": "zone_record.update", "actor": {"id": "1120", "entity": "user", "pretty": "hello@example.com"}, "account": {"id": 123, "display": "Personal", "identifier": "foobar"}, "api_version": "v2", "request_identifier": "96cc0f56-577d-41bb-beb5-b1a60ceaf049"} 14 | -------------------------------------------------------------------------------- /tests/service/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dnsimple/dnsimple-python/06b1de3a989d3662a1b851953fd1e94ef16f974d/tests/service/__init__.py -------------------------------------------------------------------------------- /tests/service/accounts_test.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | 3 | import responses 4 | 5 | from dnsimple.client import Client 6 | from dnsimple.struct.account import Account 7 | from tests.helpers import DNSimpleMockResponse, DNSimpleTest 8 | 9 | 10 | class AccountsTest(DNSimpleTest): 11 | @responses.activate 12 | def test_list_accounts(self): 13 | responses.add(DNSimpleMockResponse(method=responses.GET, 14 | path='/accounts', 15 | fixture_name='listAccounts/success-account')) 16 | accounts = self.accounts.list_accounts().data 17 | self.assertEqual(1, len(accounts)) 18 | self.assertIsInstance(accounts[0], Account) 19 | 20 | @responses.activate 21 | def test_list_users(self): 22 | responses.add(DNSimpleMockResponse(method=responses.GET, 23 | path='/accounts', 24 | fixture_name='listAccounts/success-user')) 25 | client = Client(email='tester@example.com', password='secret', base_url='https://api.sandbox.dnsimple.com') 26 | users = client.accounts.list_accounts().data 27 | self.assertEqual(2, len(users)) 28 | 29 | 30 | if __name__ == '__main__': 31 | unittest.main() 32 | -------------------------------------------------------------------------------- /tests/service/registrar_auto_renewal_test.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | 3 | import responses 4 | 5 | from tests.helpers import DNSimpleMockResponse, DNSimpleTest 6 | 7 | 8 | class RegistrarAutoRenewalTest(DNSimpleTest): 9 | @responses.activate 10 | def test_enable_domain_auto_renewal(self): 11 | responses.add(DNSimpleMockResponse(method=responses.PUT, 12 | path='/1010/registrar/domains/example.com/auto_renewal', 13 | fixture_name='enableDomainAutoRenewal/success')) 14 | self.registrar.enable_domain_auto_renewal(1010, 'example.com') 15 | 16 | @responses.activate 17 | def test_disable_domain_auto_renewal(self): 18 | responses.add(DNSimpleMockResponse(method=responses.DELETE, 19 | path='/1010/registrar/domains/example.com/auto_renewal', 20 | fixture_name='disableDomainAutoRenewal/success')) 21 | self.registrar.disable_domain_auto_renewal(1010, 'example.com') 22 | 23 | 24 | if __name__ == '__main__': 25 | unittest.main() -------------------------------------------------------------------------------- /tests/service/template_domains_test.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | 3 | import responses 4 | 5 | from tests.helpers import DNSimpleMockResponse, DNSimpleTest 6 | 7 | 8 | class TemplateDomainsTest(DNSimpleTest): 9 | @responses.activate 10 | def test_apply_template(self): 11 | responses.add(DNSimpleMockResponse(method=responses.POST, 12 | path='/1010/domains/example.com/templates/42', 13 | fixture_name='applyTemplate/success')) 14 | self.templates.apply_template(1010, 'example.com', 42) 15 | 16 | 17 | if __name__ == '__main__': 18 | unittest.main() -------------------------------------------------------------------------------- /tests/service/vanity_name_servers_test.py: -------------------------------------------------------------------------------- 1 | import unittest 2 | 3 | import responses 4 | 5 | from dnsimple.struct import VanityNameServer 6 | from tests.helpers import DNSimpleMockResponse, DNSimpleTest 7 | 8 | 9 | class VanityNameServersTest(DNSimpleTest): 10 | @responses.activate 11 | def test_enable_vanity_name_servers(self): 12 | responses.add(DNSimpleMockResponse(method=responses.PUT, 13 | path='/1010/vanity/example.com', 14 | fixture_name='enableVanityNameServers/success')) 15 | vanity_name_servers = self.vanity_name_servers.enable_vanity_name_servers(1010, 'example.com').data 16 | 17 | self.assertEqual(4, len(vanity_name_servers)) 18 | self.assertIsInstance(vanity_name_servers[0], VanityNameServer) 19 | 20 | @responses.activate 21 | def test_disable_vanity_name_servers(self): 22 | responses.add(DNSimpleMockResponse(method=responses.DELETE, 23 | path='/1010/vanity/example.com', 24 | fixture_name='disableVanityNameServers/success')) 25 | self.vanity_name_servers.disable_vanity_name_servers(1010, 'example.com') 26 | 27 | 28 | if __name__ == '__main__': 29 | unittest.main() 30 | --------------------------------------------------------------------------------