Skip to content

🌟[Major]: Domeneshop API capabilities now available#16

Merged
Marius Storhaug (MariusStorhaug) merged 56 commits into
mainfrom
release/v1.0.0
Jul 26, 2026
Merged

🌟[Major]: Domeneshop API capabilities now available#16
Marius Storhaug (MariusStorhaug) merged 56 commits into
mainfrom
release/v1.0.0

Conversation

@MariusStorhaug

@MariusStorhaug Marius Storhaug (MariusStorhaug) commented Jul 25, 2026

Copy link
Copy Markdown
Member

Domeneshop users gain authenticated access to the module's domain, DNS, forwarding, DDNS, and invoice capabilities through a consolidated pre-1.0 release candidate.

New: Domeneshop API capabilities

The module adds Context-based credential handling and commands for querying domains, managing DNS records and forwards, updating DDNS, and retrieving invoices. Command safety, validation, focused tests, and command-group documentation are included in the release candidate.

New: Guided credential setup

Running Connect-DomeneshopAccount without -Secret or its -Key alias opens the Domeneshop API settings page and securely prompts for the secret. If a browser is unavailable, the command warns and continues to the secure prompt. Explicit string and SecureString inputs remain supported, and -WhatIf does not open the browser, prompt, or change stored contexts.

Changed: Release tooling and documentation

The release candidate adopts Process-PSModule v6.1.13, enforces Pester 6.x across every test file, consolidates public command tests into root-level group suites, migrates the generated documentation site to Zensical, replaces README placeholders with the standard module landing page, and links each public command's help to its canonical generated documentation.


Technical details
Relevant issues (or links)

dependabot Bot and others added 22 commits June 2, 2026 21:42
Bumps [PSModule/Process-PSModule/.github/workflows/workflow.yml](https://github.com/psmodule/process-psmodule) from 5.4.6 to 5.5.7.
- [Release notes](https://github.com/psmodule/process-psmodule/releases)
- [Commits](PSModule/Process-PSModule@205d193...ce64918)

---
updated-dependencies:
- dependency-name: PSModule/Process-PSModule/.github/workflows/workflow.yml
  dependency-version: 5.5.7
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
The GUID pins module identity (precise pinning), a stricter control than the lock-to-major risk appetite. Keep only the version range.
Store Domeneshop API credentials with Context and add a first authenticated domains command with a shared request helper.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Load function scripts in test runtime and cover credential storage, default context behavior, domain query construction, and basic auth request execution.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Add public cmdlets for domains by ID, DNS CRUD, forwards CRUD, DDNS update, and invoices list/get. Reuse Context-based auth for all requests.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Cover URI/method construction for domains, DNS, forwards, invoices, and DDNS commands using mocked API invocations.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
# Conflicts:
#	.github/workflows/Process-PSModule.yml
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@github-actions

github-actions Bot commented Jul 25, 2026

Copy link
Copy Markdown

Super-linter summary

Language Validation result
CHECKOV Pass ✅
GITHUB_ACTIONS Pass ✅
GITLEAKS Pass ✅
GIT_MERGE_CONFLICT_MARKERS Pass ✅
MARKDOWN Pass ✅
NATURAL_LANGUAGE Pass ✅
POWERSHELL Pass ✅
PRE_COMMIT Pass ✅
SPELL_CODESPELL Pass ✅
TRIVY Pass ✅
YAML Pass ✅

All files and directories linted successfully

For more information, see the GitHub Actions workflow run

Powered by Super-linter

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This pull request consolidates a pre-1.0 release candidate that adds authenticated Domeneshop API functionality (Context-based credentials + domain/DNS/forward/DDNS/invoice operations) and aligns CI/testing/release tooling with the Process-PSModule v6.1.4 + Pester 6.x expectations.

Changes:

  • Adds Context-backed authentication flow plus private HTTP transport helpers for Domeneshop API requests.
  • Introduces public commands and command-group docs for Domains, DNS, Forwards, DDNS, and Invoices.
  • Reworks and expands Pester coverage (per-command tests + Pester 6.x requirement) and updates the Process-PSModule workflow pin.

Reviewed changes

Copilot reviewed 44 out of 44 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
.github/workflows/Process-PSModule.yml Bumps reusable workflow pin to Process-PSModule v6.1.4 SHA.
README.md Replaces template README content with a module landing/status section.
src/functions/private/Invoke-DomeneshopApiRequest.ps1 Adds authenticated REST transport helper using Basic auth from resolved context.
src/functions/private/Get-DomeneshopApiBaseUri.ps1 Validates and normalizes the API base URI from context.
src/functions/private/Auth/Get-DomeneshopConfig.ps1 Adds config retrieval with a default fallback config object.
src/functions/private/Auth/Resolve-DomeneshopContext.ps1 Adds context validation for credentials and base URI presence.
src/functions/private/Auth/Set-DomeneshopDefaultContext.ps1 Persists default context selection in the Context vault.
src/functions/public/Get-PSModuleTest.ps1 Refines the smoke-test command help/validation and output behavior.
src/functions/public/Auth/Auth.md Adds Auth command-group documentation page.
src/functions/public/Auth/Connect-DomeneshopAccount.ps1 Adds credential storage command with optional default selection and PassThru.
src/functions/public/Auth/Get-DomeneshopContext.ps1 Adds retrieval/listing of stored contexts from the Context vault.
src/functions/public/Domains/Domains.md Adds Domains command-group documentation page.
src/functions/public/Domains/Get-DomeneshopDomain.ps1 Adds domain listing and domain-by-ID retrieval with query escaping.
src/functions/public/Dns/Dns.md Adds DNS command-group documentation page.
src/functions/public/Dns/Add-DomeneshopDnsRecord.ps1 Adds DNS record create (POST) command with ShouldProcess.
src/functions/public/Dns/Get-DomeneshopDnsRecord.ps1 Adds DNS record list/query and record-by-ID retrieval.
src/functions/public/Dns/Remove-DomeneshopDnsRecord.ps1 Adds DNS record delete command with ShouldProcess/ConfirmImpact.
src/functions/public/Dns/Set-DomeneshopDnsRecord.ps1 Adds DNS record replace (PUT) command with ShouldProcess.
src/functions/public/Forwards/Forwards.md Adds Forwards command-group documentation page.
src/functions/public/Forwards/Add-DomeneshopForward.ps1 Adds HTTP forward create (POST) command with ShouldProcess.
src/functions/public/Forwards/Get-DomeneshopForward.ps1 Adds forward listing and forward-by-host retrieval with host escaping.
src/functions/public/Forwards/Remove-DomeneshopForward.ps1 Adds forward delete command with ShouldProcess/ConfirmImpact.
src/functions/public/Forwards/Set-DomeneshopForward.ps1 Adds forward replace (PUT) command with ShouldProcess and host escaping.
src/functions/public/Ddns/Ddns.md Adds Dynamic DNS command-group documentation page.
src/functions/public/Ddns/Update-DomeneshopDdns.ps1 Adds DDNS update command building escaped query parameters and honoring WhatIf.
src/functions/public/Invoices/Invoices.md Adds Invoices command-group documentation page.
src/functions/public/Invoices/Get-DomeneshopInvoice.ps1 Adds invoice list + invoice-by-ID retrieval.
tests/Domeneshop.TestSetup.ps1 Adds shared test setup that dot-sources functions and provides a test context.
tests/Domeneshop.Private.Tests.ps1 Adds tests for private helpers (context validation/base URI/transport auth).
tests/Connect-DomeneshopAccount.Tests.ps1 Adds Connect-DomeneshopAccount behavior tests (storage, defaulting, WhatIf, validation).
tests/Get-DomeneshopContext.Tests.ps1 Adds Get-DomeneshopContext tests (default, missing default error, listing behavior).
tests/Get-DomeneshopDomain.Tests.ps1 Adds Get-DomeneshopDomain tests (escaping, by-ID path, validation).
tests/Get-DomeneshopDnsRecord.Tests.ps1 Adds Get-DomeneshopDnsRecord tests (query escaping, by-ID path).
tests/Add-DomeneshopDnsRecord.Tests.ps1 Adds Add-DomeneshopDnsRecord tests (POST + WhatIf).
tests/Set-DomeneshopDnsRecord.Tests.ps1 Adds Set-DomeneshopDnsRecord tests (PUT + WhatIf).
tests/Remove-DomeneshopDnsRecord.Tests.ps1 Adds Remove-DomeneshopDnsRecord tests (DELETE + WhatIf).
tests/Get-DomeneshopForward.Tests.ps1 Adds Get-DomeneshopForward tests (list, escaped host).
tests/Add-DomeneshopForward.Tests.ps1 Adds Add-DomeneshopForward tests (POST + WhatIf).
tests/Set-DomeneshopForward.Tests.ps1 Adds Set-DomeneshopForward tests (PUT + WhatIf).
tests/Remove-DomeneshopForward.Tests.ps1 Adds Remove-DomeneshopForward tests (DELETE + WhatIf).
tests/Update-DomeneshopDdns.Tests.ps1 Adds Update-DomeneshopDdns tests (query escaping + WhatIf).
tests/Get-DomeneshopInvoice.Tests.ps1 Adds Get-DomeneshopInvoice tests (list and by-ID path).
tests/PSModuleTest.Tests.ps1 Removes the earlier single-file scaffold test.
tests/Get-PSModuleTest.Tests.ps1 Adds a Pester 6.x-required smoke test that dot-sources functions before invocation.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread README.md Outdated
Comment thread README.md Outdated
Comment thread src/functions/public/Auth/Get-DomeneshopContext.ps1
Comment thread src/functions/private/Auth/Set-DomeneshopDefaultContext.ps1
Comment thread src/functions/public/Auth/Connect-DomeneshopAccount.ps1
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 48 out of 48 changed files in this pull request and generated 1 comment.

Comment thread src/functions/public/Auth/Connect-DomeneshopAccount.ps1
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Marius Storhaug (MariusStorhaug) added a commit to MSXOrg/docs that referenced this pull request Jul 25, 2026
PowerShell module authors now have one unambiguous canonical form for
generated online help links, preventing `.LINK` URLs from alternating
between equivalent-looking routes.

## Changed: Generated function help links use trailing slashes

Every public function now uses its generated online reference URL as the
first `.LINK` entry. Both ungrouped and grouped URL examples explicitly
end in `/`; private-helper guidance is unchanged.

## Technical Details

- Updated only `src/docs/Coding-Standards/PowerShell/Functions.md`.
- Aligns the shared standard with the canonical generated help routes
adopted in PSModule/Domeneshop commit
`41f39ca521652c022aaa2ca940adf45f81067a2e`.
- Documentation index verification, link validation, and a clean
Zensical build are complete.

<details>
<summary>Related issues</summary>

- PSModule/Domeneshop#16

</details>

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@MariusStorhaug
Marius Storhaug (MariusStorhaug) marked this pull request as ready for review July 25, 2026 23:18
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Marius Storhaug (MariusStorhaug) added a commit to MSXOrg/docs that referenced this pull request Jul 25, 2026
PR description guidance now requires a consistent ending section that
matches the standard currently used in PSModule/Domeneshop. Contributors
now get explicit, copy-pasteable structure for the separator line plus
both foldable blocks with exact summary text.

## Changed: PR ending structure is now explicitly required

The PR format standard now requires all PR descriptions to end with a
horizontal separator and two `<details>` blocks, in a fixed order and
with exact summary text.

---
<details>
<summary>Technical details</summary>

- Updated `Ways-of-Working/PR-Format` to require the exact
end-of-description structure.
- Replaced prior "Technical Details" heading guidance with required
foldable block guidance.
- Updated the example snippet to use `Technical details` and `Relevant
issues (or links)` exactly.

</details>

<details>
<summary>Relevant issues (or links)</summary>

- PSModule/Domeneshop#16

</details>

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@MariusStorhaug Marius Storhaug (MariusStorhaug) changed the title 🚀 [Feature]: Domeneshop API capabilities now available 🌟 [Major]: Domeneshop API capabilities now available Jul 25, 2026
@MariusStorhaug Marius Storhaug (MariusStorhaug) changed the title 🌟 [Major]: Domeneshop API capabilities now available 🌟[Major]: Domeneshop API capabilities now available Jul 25, 2026
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
# Conflicts:
#	tests/Auth.Tests.ps1
#	tests/Ddns.Tests.ps1
#	tests/Domains.Tests.ps1
#	tests/Invoices.Tests.ps1
#	tests/TestLayout.Tests.ps1
@MariusStorhaug
Marius Storhaug (MariusStorhaug) merged commit 4609ec2 into main Jul 26, 2026
67 checks passed
@MariusStorhaug
Marius Storhaug (MariusStorhaug) deleted the release/v1.0.0 branch July 26, 2026 00:27
@github-actions

Copy link
Copy Markdown

✅ New release: PowerShell Gallery - Domeneshop 1.0.0

@github-actions

Copy link
Copy Markdown

✅ New release: GitHub - Domeneshop 1.0.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Deliver Domeneshop API capabilities across domains, DNS, forwarding, DDNS, and invoices

2 participants