Skip to main content

npmctl-godaddy

GoDaddy DNS provider plugin for npmctl

Extend npmctl with GoDaddy-backed DNS record management for declarative workflows, provider discovery, and DNS-aware automation.

PyPI version Python versions CI SSOT governed Apache 2.0 License

npmctl-godaddy package hits npmctl-godaddy downloads

npmctl architecture infographic

npmctl-godaddy is the GoDaddy DNS provider package for npmctl. Install it when you want desired-state DNS records or DNS diagnostics to resolve through GoDaddy instead of using only the base npmctl package.

Supported Python Versions

npmctl-godaddy supports Python 3.10, 3.11, 3.12, 3.13, and 3.14.

Why npmctl-godaddy

  • Adds GoDaddy DNS provider discovery to npmctl
  • Lets DNS workflows live beside proxy and certificate desired state
  • Keeps GoDaddy API keys out of the core CLI package
  • Supports operator diagnostics through npmctl dns doctor
  • Documents GoDaddy's record-set replacement behavior for safer automation

FAQ

What is npmctl-godaddy?

Answer: npmctl-godaddy is a plugin package that teaches npmctl how to talk to the GoDaddy Domains API for DNS record operations and DNS provider diagnostics.

When do I need npmctl-godaddy?

Answer: You need npmctl-godaddy when your npmctl workflow includes GoDaddy-managed DNS records or when you want npmctl to validate GoDaddy DNS connectivity and credentials.

Does npmctl-godaddy work without npmctl?

Answer: No. npmctl-godaddy is an extension package for npmctl, not a standalone CLI.

Can npmctl-godaddy set DNS records?

Answer: Yes. The GoDaddy provider supports declarative A, AAAA, CNAME, TXT, MX, SRV, and CAA writes. MX records require priority. Its DNS mutation endpoint replaces all records for one {type, name} pair, so preserve existing values when managing multi-value records.

What credentials are required?

Answer: GoDaddy API access requires GODADDY_API_KEY and GODADDY_API_SECRET. Account protection, domain locks, or product eligibility can still block DNS mutations even when credentials are valid.

Install

Install the base CLI and the GoDaddy provider package together:

pipx install npmctl
pipx inject npmctl npmctl-godaddy
npmctl plugins list

With uv:

uv tool install npmctl
uv tool install npmctl-godaddy
npmctl plugins list

Inside a virtual environment:

python -m venv .venv
. .venv/bin/activate
python -m pip install npmctl npmctl-godaddy
npmctl plugins list

Configure GoDaddy

Set the required environment variables:

export GODADDY_API_KEY=your-api-key
export GODADDY_API_SECRET=your-api-secret

Optional for tests or alternate endpoints:

export GODADDY_API_BASE_URL=https://api.godaddy.com

Verify Plugin Discovery

Check that npmctl can discover the provider:

npmctl plugins list
npmctl dns doctor --provider godaddy

Minimal DNS Workflow

Once the provider is installed and configured, npmctl can validate, plan, apply, or diagnose GoDaddy-backed DNS behavior through the base CLI:

npmctl validate desired-state/dns.yaml
npmctl plan desired-state/dns.yaml --owner site-a
npmctl apply desired-state/dns.yaml --owner site-a
npmctl dns providers
npmctl dns zones --provider godaddy
npmctl dns records --provider godaddy --zone example.com

GoDaddy API Surface

The provider follows the GoDaddy Domains API DNS record surface:

  • GET /v1/domains: discover domains in the account.
  • GET /v1/domains/{domain}/records: list all DNS records for one domain.
  • GET /v1/domains/{domain}/records/{type}/{name}: list records for one type and name.
  • PUT /v1/domains/{domain}/records/{type}/{name}: replace the full record set for one type and name.
  • DELETE /v1/domains/{domain}/records/{type}/{name}: delete records for one type and name.

Programmatic Record Operations

create_record() is a convenience wrapper that replaces a {type, name} pair with one record. Use replace_records() when preserving multiple values for the same record name and type:

from npmctl_godaddy import GoDaddyClient, GoDaddyConfig

client = GoDaddyClient(GoDaddyConfig.from_env())
client.create_record("example.com", type="A", name="www", value="192.0.2.10", ttl=600)
client.replace_records(
    "example.com",
    type="CNAME",
    name="app",
    records=[{"data": "target.example.net", "ttl": 600}],
)
client.delete_records("example.com", type="A", name="www")

Safety Notes

  • GoDaddy PUT replaces all records for the selected {type, name} pair.
  • Account-level domain locks, premium DNS status, protection settings, or product eligibility may block API changes even when credentials are valid.
  • Use least-privilege keys where available and avoid broad automation over unrelated domains.
  • Use npmctl owner metadata for desired DNS records so apply remains owner-scoped.

More Documentation

Metadata

Release files for npmctl-godaddy 0.4.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for npmctl-godaddy 0.4.1
File Size Uploaded
npmctl_godaddy-0.4.1.tar.gz 4.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for npmctl-godaddy 0.4.1
File Interpreter ABI Platform
npmctl_godaddy-0.4.1-py3-none-any.whl Python 3 none any Details

Total release size: 10.3 kB

Release files / npmctl_godaddy-0.4.1.tar.gz

Download URL npmctl_godaddy-0.4.1.tar.gz
Size 4.1 kB
Tags Source
SHA-256 checksum
How to use checksums
c30c81950319c0c4fd70ff67bd84e84261a0fa5070a92cc4ff0c69ee9f659abf
BLAKE2b-256 checksum
How to use checksums
61cbdf8bb110becdb2664a3bda29e1f03dc71222b6db6b8c6418f01b8c2a2393
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / npmctl_godaddy-0.4.1-py3-none-any.whl

Download URL npmctl_godaddy-0.4.1-py3-none-any.whl
Size 6.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6c8ef6735f65bcd519fd254a66b9a9c79d61bcf636ff7e144b8cfd68570eaf03
BLAKE2b-256 checksum
How to use checksums
e19f125a38397ad660048978c5b8e4e385e1cd0d26ca30f93216657a88475699
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.1 {"installer":{"name":"uv","version":"0.12.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.4.1 This release

2 release files

0.3.10

2 release files

0.3.8

2 release files

0.3.7

2 release files

0.3.6

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page