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

@MariusStorhaugMarius 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)

dependabotBotand 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-actionsBot commented Jul 25, 2026

Copy link
Copy Markdown

Super-linter summary

LanguageValidation result
CHECKOVPass ✅
GITHUB_ACTIONSPass ✅
GITLEAKSPass ✅
GIT_MERGE_CONFLICT_MARKERSPass ✅
MARKDOWNPass ✅
NATURAL_LANGUAGEPass ✅
POWERSHELLPass ✅
PRE_COMMITPass ✅
SPELL_CODESPELLPass ✅
TRIVYPass ✅
YAMLPass ✅

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>

CopilotAI 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
FileDescription
.github/workflows/Process-PSModule.ymlBumps reusable workflow pin to Process-PSModule v6.1.4 SHA.
README.mdReplaces template README content with a module landing/status section.
src/functions/private/Invoke-DomeneshopApiRequest.ps1Adds authenticated REST transport helper using Basic auth from resolved context.
src/functions/private/Get-DomeneshopApiBaseUri.ps1Validates and normalizes the API base URI from context.
src/functions/private/Auth/Get-DomeneshopConfig.ps1Adds config retrieval with a default fallback config object.
src/functions/private/Auth/Resolve-DomeneshopContext.ps1Adds context validation for credentials and base URI presence.
src/functions/private/Auth/Set-DomeneshopDefaultContext.ps1Persists default context selection in the Context vault.
src/functions/public/Get-PSModuleTest.ps1Refines the smoke-test command help/validation and output behavior.
src/functions/public/Auth/Auth.mdAdds Auth command-group documentation page.
src/functions/public/Auth/Connect-DomeneshopAccount.ps1Adds credential storage command with optional default selection and PassThru.
src/functions/public/Auth/Get-DomeneshopContext.ps1Adds retrieval/listing of stored contexts from the Context vault.
src/functions/public/Domains/Domains.mdAdds Domains command-group documentation page.
src/functions/public/Domains/Get-DomeneshopDomain.ps1Adds domain listing and domain-by-ID retrieval with query escaping.
src/functions/public/Dns/Dns.mdAdds DNS command-group documentation page.
src/functions/public/Dns/Add-DomeneshopDnsRecord.ps1Adds DNS record create (POST) command with ShouldProcess.
src/functions/public/Dns/Get-DomeneshopDnsRecord.ps1Adds DNS record list/query and record-by-ID retrieval.
src/functions/public/Dns/Remove-DomeneshopDnsRecord.ps1Adds DNS record delete command with ShouldProcess/ConfirmImpact.
src/functions/public/Dns/Set-DomeneshopDnsRecord.ps1Adds DNS record replace (PUT) command with ShouldProcess.
src/functions/public/Forwards/Forwards.mdAdds Forwards command-group documentation page.
src/functions/public/Forwards/Add-DomeneshopForward.ps1Adds HTTP forward create (POST) command with ShouldProcess.
src/functions/public/Forwards/Get-DomeneshopForward.ps1Adds forward listing and forward-by-host retrieval with host escaping.
src/functions/public/Forwards/Remove-DomeneshopForward.ps1Adds forward delete command with ShouldProcess/ConfirmImpact.
src/functions/public/Forwards/Set-DomeneshopForward.ps1Adds forward replace (PUT) command with ShouldProcess and host escaping.
src/functions/public/Ddns/Ddns.mdAdds Dynamic DNS command-group documentation page.
src/functions/public/Ddns/Update-DomeneshopDdns.ps1Adds DDNS update command building escaped query parameters and honoring WhatIf.
src/functions/public/Invoices/Invoices.mdAdds Invoices command-group documentation page.
src/functions/public/Invoices/Get-DomeneshopInvoice.ps1Adds invoice list + invoice-by-ID retrieval.
tests/Domeneshop.TestSetup.ps1Adds shared test setup that dot-sources functions and provides a test context.
tests/Domeneshop.Private.Tests.ps1Adds tests for private helpers (context validation/base URI/transport auth).
tests/Connect-DomeneshopAccount.Tests.ps1Adds Connect-DomeneshopAccount behavior tests (storage, defaulting, WhatIf, validation).
tests/Get-DomeneshopContext.Tests.ps1Adds Get-DomeneshopContext tests (default, missing default error, listing behavior).
tests/Get-DomeneshopDomain.Tests.ps1Adds Get-DomeneshopDomain tests (escaping, by-ID path, validation).
tests/Get-DomeneshopDnsRecord.Tests.ps1Adds Get-DomeneshopDnsRecord tests (query escaping, by-ID path).
tests/Add-DomeneshopDnsRecord.Tests.ps1Adds Add-DomeneshopDnsRecord tests (POST + WhatIf).
tests/Set-DomeneshopDnsRecord.Tests.ps1Adds Set-DomeneshopDnsRecord tests (PUT + WhatIf).
tests/Remove-DomeneshopDnsRecord.Tests.ps1Adds Remove-DomeneshopDnsRecord tests (DELETE + WhatIf).
tests/Get-DomeneshopForward.Tests.ps1Adds Get-DomeneshopForward tests (list, escaped host).
tests/Add-DomeneshopForward.Tests.ps1Adds Add-DomeneshopForward tests (POST + WhatIf).
tests/Set-DomeneshopForward.Tests.ps1Adds Set-DomeneshopForward tests (PUT + WhatIf).
tests/Remove-DomeneshopForward.Tests.ps1Adds Remove-DomeneshopForward tests (DELETE + WhatIf).
tests/Update-DomeneshopDdns.Tests.ps1Adds Update-DomeneshopDdns tests (query escaping + WhatIf).
tests/Get-DomeneshopInvoice.Tests.ps1Adds Get-DomeneshopInvoice tests (list and by-ID path).
tests/PSModuleTest.Tests.ps1Removes the earlier single-file scaffold test.
tests/Get-PSModuleTest.Tests.ps1Adds 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 threadREADME.md Outdated
Comment threadREADME.md Outdated
Comment threadsrc/functions/public/Auth/Get-DomeneshopContext.ps1
Comment threadsrc/functions/private/Auth/Set-DomeneshopDefaultContext.ps1
Comment threadsrc/functions/public/Auth/Connect-DomeneshopAccount.ps1
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

CopilotAI 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 threadsrc/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>
@MariusStorhaugMarius Storhaug (MariusStorhaug) changed the title 🚀 [Feature]: Domeneshop API capabilities now available🌟 [Major]: Domeneshop API capabilities now availableJul 25, 2026
@MariusStorhaugMarius Storhaug (MariusStorhaug) changed the title 🌟 [Major]: Domeneshop API capabilities now available🌟[Major]: Domeneshop API capabilities now availableJul 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 mainJul 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 freeto 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

@MariusStorhaug