Skip to main content

INWX provider for octoDNS

An octoDNS provider that targets INWX DNS via the DOMRobot XML-RPC API.

Installation

Command line

pip install octodns-inwx

requirements.txt/setup.py

Pinning specific versions or SHAs is recommended to avoid unplanned upgrades.

Versions
# Start with the latest versions and don't just copy what's here
octodns==1.18.0
octodns-inwx==0.1.0
SHAs
# Start with the latest/specific versions and don't just copy what's here
-e git+https://git@github.com/octodns/octodns.git@9da19749e28f68407a1c246dfdf65663cdc1c422#egg=octodns
-e git+https://git@github.com/fjaeckel/octodns-inwx.git@<sha>#egg=octodns_inwx

Configuration

providers:
  inwx:
    class: octodns_inwx.INWXProvider
    # INWX account username (required)
    username: env/INWX_USERNAME
    # INWX API password (required)
    api_password: env/INWX_PASSWORD
    # API endpoint base URL (optional, defaults to the production endpoint)
    #endpoint: https://api.domrobot.com
    # How many times to retry a transient API failure (optional, default 4)
    #retries: 4
    # Base seconds for the exponential retry backoff (optional, default 2.0)
    #retry_backoff: 2.0

A dedicated API user with permission to manage the affected domains is recommended.

Rate limiting

Large plans (many deletes, or a zone with dozens of changes) can trip INWX' account-level rate limiting, which surfaces as a generic 2400 Command failed on any API method. The provider retries those with an exponential backoff — raise retries/retry_backoff if bulk applies still fail. The backoff pauses every worker, not just the one that was throttled, since the limit applies to the account rather than the connection.

Support Information

Records

INWXProvider supports A, AAAA, CAA, CNAME, MX, NS, PTR, SRV, TLSA, and TXT.

PTR records are managed the same way as any other record type, so reverse DNS zones (e.g. 2.0.192.in-addr.arpa. or ...ip6.arpa.) can be managed by octoDNS as long as the corresponding reverse zone is registered with INWX.

Multi-value PTR records (multiple hostnames pointed at the same IP) are supported, since INWX itself allows storing more than one PTR row per name.

Dynamic

INWXProvider does not support dynamic records.

Concurrency (max_workers)

octoDNS shares a single INWXProvider/session across all zones that use it, and runs populate() for those zones concurrently on separate threads when the manager's max_workers is greater than 1. The underlying INWX API is session-based, so the provider serializes all API calls internally and keeps the session logged in for the lifetime of the provider instead of logging out after each zone -- logging out early would kill the session for any other zone still in flight. If you need to explicitly close the session (e.g. at the end of a script that uses INWXProvider directly), call provider.close().

Development

Install the package in editable mode along with the development tools:

pip install -r requirements-dev.txt

Tests are run with:

python -m unittest discover -s tests -v

Linting is run with:

ruff check .

Releasing

Releases are published to PyPI automatically by .github/workflows/publish.yml whenever a v* tag is pushed. The workflow refuses to publish if the tag doesn't match the version in pyproject.toml, so the two must be bumped together:

  1. Update version in pyproject.toml (e.g. 0.1.2 -> 0.1.3).
  2. Commit the bump, e.g. git commit -am "Bump version to 0.1.3".
  3. Tag the commit to match, with a v prefix: git tag v0.1.3.
  4. Push both the commit and the tag: git push && git push origin v0.1.3.

Pushing the tag triggers the workflow, which verifies the tag matches pyproject.toml, builds the sdist/wheel, and publishes to PyPI via trusted publishing (no manual credentials needed).

Metadata

Release files for octodns-inwx 0.1.5

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

Source distribution (sdist)

Source distribution for octodns-inwx 0.1.5
File Size Uploaded
octodns_inwx-0.1.5.tar.gz 18.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for octodns-inwx 0.1.5
File Interpreter ABI Platform
octodns_inwx-0.1.5-py3-none-any.whl Python 3 none any Details

Total release size: 28.0 kB

Release files / octodns_inwx-0.1.5.tar.gz

Download URL octodns_inwx-0.1.5.tar.gz
Size 18.2 kB
Tags Source
SHA-256 checksum
How to use checksums
ef6f819675f91de4675f2632d06b6a42b3b83c96a04cdcaa051ac23c086b6fdc
BLAKE2b-256 checksum
How to use checksums
8e4772342bf3b283ad2071e7e304709520e230821471bb9e2cec377ba85a8181
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 20, 2026.

Transparency log

Release files / octodns_inwx-0.1.5-py3-none-any.whl

Download URL octodns_inwx-0.1.5-py3-none-any.whl
Size 9.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
066bcadda93952110a8aa9b6ed2b89804d0e1104c6225a104cf1e8e8b9fb7c63
BLAKE2b-256 checksum
How to use checksums
4ae4722d1196ad2e16e9ece9830d13276a0df5f21cc9bb00e01f7578487e0a69
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 20, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.5 This release

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

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