# Table of Contents <!-- omit from toc -->
- [Overview](#overview)
- [CLI](#cli)
- [Installation](#installation)
- [Connecting the to API](#connecting-the-to-api)
- [Examples](#examples)
- [Client Library](#client-library)
- [Project Status](#project-status)
- [Development Notes](#development-notes)
# Overview
This project provides two components:
1. **Library** — A Rust client library/SDK for interacting with the PowerDNS Authoritative Server API.
2. **CLI** — A command-line application built on top of the client library.
# CLI
## Installation
Like any rust crate, it can be installed via `cargo install pdns-cli`
## Connecting the to API
The CLI expects 2 parameters:
1) The webser url
This url specifies the API endpoint to hit and can be specified in 2 ways
- `PDNS_WEBSERVER_URL` environment variable
- `webserver-url` cli parameter
See `pdns_client::Client::new` for restrictions on the url
2) The webserver API key
This is used for authenticating to the API (specified in the header of requests as `X-API-Key`) and can be specified in 2 ways
- `PDNS_API_KEY` environment variable
- `api-key` cli parameter
## Examples
```bash
export PDNS_WEBSERVER_URL=http://127.0.0.1:8081/
export PDNS_API_KEY=changeme
pdns-cli servers list
```
# Client Library
Documentation for the library crate is published to `docs.rs` and can be found at: https://docs.rs/pdns-cli/latest/pdns_client/.
# Project Status
This is a personal learning project, which leads to certain limitations, such as:
- Development is maintained on a best-effort basis. There is no guaranteed release schedule.
- The public API and supported feature set may remain intentionally minimal.
- Cross-platform support is limited and may not be actively tested.
- APIs and internal implementation details may not always be idiomatic.
# Development Notes
- This project is developed and tested only on Ubuntu
- Rust patterns in internal code and ecosystem tooling may be in constant flux and may not always be idiomatic for Rust