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

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

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.4

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.4
File Size Uploaded
octodns_inwx-0.1.4.tar.gz 16.3 kB Details

Built distribution (wheel)

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

Total release size: 24.9 kB

Release files / octodns_inwx-0.1.4.tar.gz

Download URL octodns_inwx-0.1.4.tar.gz
Size 16.3 kB
Tags Source
SHA-256 checksum
How to use checksums
a961c4b07c9cee1782d928654eb4d0ba9b33094a56e5887045cfe215cc4eac93
BLAKE2b-256 checksum
How to use checksums
b851eda07dabcb12aceabc948637bd7ffb15dcd798321d0ef88f1604f0c04c3c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 10, 2026.

Transparency log

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

Download URL octodns_inwx-0.1.4-py3-none-any.whl
Size 8.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e702a893a742dcffb64f7ecee2d4a15de1d648ceef6d11fc457ec28c7f36f9ca
BLAKE2b-256 checksum
How to use checksums
580b1e0ccf5296e50a05930b2a6d7f1b397735e4b0a17e0ca18cd957c878b857
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

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 10, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.5

2 release files

This release

0.1.4 This release

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