Skip to content

feat: add Domain Management, completing the Domains API area - #120

Merged
mikemadeja merged 1 commit into
developfrom
feature/domain-management
Sep 27, 2026
Merged

mikemadeja merged 1 commit into
developfrom
feature/domain-management

Conversation

@mikemadeja

Copy link
Copy Markdown
Owner

Summary

  • Adds Get-PiHoleDomain, New-PiHoleDomain, Update-PiHoleDomain, Remove-PiHoleDomain, covering Pi-hole's newer per-domain allow/deny API (GET/POST/PUT /domains/... + POST /domains:batchDelete). This is distinct from the existing List Management functions, which manage whole allow/block list subscriptions rather than individual domains.
  • Single-item DELETE /domains/{type}/{kind}/{domain} is intentionally skipped in favor of the batch endpoint — same precedent already set by Remove-PiHoleList.
  • Update-PiHoleDomain deliberately does not implement the API's documented "move a domain to a different Type/Kind via the same PUT" feature: live testing against a real server showed this leaves a stale duplicate at the original Type/Kind rather than actually moving it, so that path is left unimplemented rather than shipping broken behavior. Documented in the function's .DESCRIPTION.
  • Adds a "Domain Management" category to tools/Update-ReadmeCommandReference.ps1 and tools/Update-ExampleOutput.ps1 (previously it would have silently folded into "Configuration & Diagnostics"), and regenerates README.md and docs/EXAMPLES.md accordingly.

This completes the "Domains" area from the API coverage audit (8 of 8 operations addressed: 7 implemented, 1 intentionally skipped).

Test plan

  • All behavior verified directly against the real Pi-hole server before writing tests (create, duplicate detection, get/filter, update-merge, not-found error, batch remove, confirm-gone).
  • 18 new Pester integration tests across the 4 functions, all passing against the real server.
  • Confirmed server left in a clean state after every test run and after regenerating docs/EXAMPLES.md.
  • Invoke-ScriptAnalyzer clean against the new functions.
  • Full non-integration Pester unit suite passes (4/4; unaffected by this change).

🤖 Generated with Claude Code

Adds Get/New/Update/Remove-PiHoleDomain, covering Pi-hole's newer
per-domain allow/deny API (GET/POST/PUT + batch-delete), distinct from
the existing Lists functions which manage whole list subscriptions.
Single-item DELETE is intentionally skipped in favor of the batch
endpoint, matching the precedent already set by Remove-PiHoleList.

Update-PiHoleDomain deliberately does not support moving a domain
between Type/Kind despite the API documenting it as possible via the
same PUT request - live testing against a real server showed this
leaves a stale duplicate at the original Type/Kind instead of actually
moving it, so that path is left unimplemented rather than shipping
broken behavior.

Adds a Domain Management category to both tools/Update-ReadmeCommand
Reference.ps1 and tools/Update-ExampleOutput.ps1, and regenerates
README.md and docs/EXAMPLES.md accordingly.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@mikemadeja
mikemadeja merged commit ed4323d into develop Sep 27, 2026
3 checks passed
@mikemadeja mikemadeja mentioned this pull request Sep 27, 2026
1 task done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant