Skip to content

feat: migrate HTTP API docs from openvox_8x to openvox-server_8x (#250)#254

Merged
tuxmea merged 3 commits into
OpenVoxProject:masterfrom
miharp:feat/http-api-migrate-250
May 28, 2026
Merged

feat: migrate HTTP API docs from openvox_8x to openvox-server_8x (#250)#254
tuxmea merged 3 commits into
OpenVoxProject:masterfrom
miharp:feat/http-api-migrate-250

Conversation

@miharp
Copy link
Copy Markdown
Contributor

@miharp miharp commented May 26, 2026

Summary

  • Migrates 9 Puppet v3 API endpoint pages from docs/_openvox_8x/http_api/ into docs/_openvox-server_8x/, updating front matter, schema links, and heading style to match the collection conventions
  • Removes 3 pages for endpoints deleted upstream (resource_type, environment, status) and deletes the now-empty docs/_openvox_8x/http_api/ directory
  • Adds 3 new CA v1 endpoint pages written from scratch: certificate expirations, certificate renewal, and bulk certificate sign — verified against the OpenVox Server Clojure source and a live Vagrant environment
  • Restructures the openvox-server_8x sidebar nav into a single "HTTP API" parent with Puppet v3, Puppet v4, and CA v1 sub-groups
  • Replaces the openvox_8x HTTP API nav section with a single cross-link to the openvox-server collection
  • Fixes _includes/nav-item.html to not prepend the collection base URL to nav links that are already absolute paths (starts with /) — this PR introduced the first cross-collection nav link, which exposed the bug

CA endpoint verification (live Vagrant)

All three new CA v1 pages were verified against a running OpenVox Server in Vagrant (puppet.example.com).

Certificate Expirations (GET /puppet-ca/v1/expirations):

HTTP/1.1 200 OK
Content-Type: application/json

{
  "ca-certs": {
    "Puppet CA: puppet.example.com": "2041-05-15T11:22:16UTC",
    "Puppet Root CA: c6cb234925032e": "2041-05-15T11:22:14UTC"
  },
  "crls": {
    "Puppet CA: puppet.example.com": "2031-05-25T14:36:06UTC",
    "Puppet Root CA: c6cb234925032e": "2041-05-15T11:22:14UTC"
  }
}

Two entries per key because the Vagrant environment uses an intermediate CA. CA cert expiry reflects the 15-year default from puppetserver ca setup; CRL next-update reflects the 5-year ca_ttl rotation cycle.

Certificate Renewal (POST /puppet-ca/v1/certificate_renewal):

With allow-auto-renewal: false (default):

HTTP/1.1 404 Not Found

Confirmed: endpoint returns 404 when auto-renewal is disabled, as documented.

Bulk Certificate Sign (POST /puppet-ca/v1/sign):

Schema violation (non-string certname value) returns:

HTTP/1.1 422 Unprocessable Entity
Content-Type: application/json

{"kind":"schema-violation","submitted":[42],"error":"[(not (instance? java.lang.String 42))]"}

Test plan

  • npx markdownlint-cli2 passes with 0 errors on all 13 changed files
  • CA v1 endpoint responses verified against live Vagrant environment
  • CA v1 endpoint routes and response shapes verified against OpenVox Server source (certificate_authority_core.clj)
  • Nav renders correctly in bundle exec jekyll serve — "HTTP API" parent expands with Puppet v3, Puppet v4, and CA v1 sub-groups, all links active
  • All 27 relative links in http_api_index.markdown resolve to existing pages
  • Cross-collection nav link (/openvox-server/latest/http_api_index.html) renders without double-slash and resolves correctly

Closes #250

@miharp miharp force-pushed the feat/http-api-migrate-250 branch 3 times, most recently from 1c3ed94 to 2050da4 Compare May 26, 2026 15:11
Resolves phase 1-4 of issue OpenVoxProject#250:
- Move 9 Puppet v3 API pages from docs/_openvox_8x/http_api/ into
  docs/_openvox-server_8x/, updating front matter and schema links
- Remove 3 deleted-endpoint pages (resource_type, environment, status)
  and delete the entire docs/_openvox_8x/http_api/ directory
- Write 3 new CA v1 endpoint pages from scratch (expirations, renewal,
  sign), verified against OpenVox Server source and a live Vagrant env
- Restructure openvox-server_8x nav into a single "HTTP API" parent
  with Puppet v3, Puppet v4, and CA v1 sub-groups
- Replace openvox_8x HTTP API nav with a cross-link to openvox-server

Closes OpenVoxProject#250

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
@miharp miharp force-pushed the feat/http-api-migrate-250 branch from 2050da4 to 807acdc Compare May 26, 2026 15:25
@miharp miharp marked this pull request as ready for review May 26, 2026 15:34
@miharp miharp requested a review from a team as a code owner May 26, 2026 15:34
Nav links starting with '/' are already absolute site paths. The old
code unconditionally prepended nav_base (also starting with '/'),
producing a double-prefix like /openvox/latest//openvox-server/latest/...
and causing a 404.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
* `pluginfacts` --- a highly magical mount point which merges the `facts.d` directory of every module together. Used for syncing external facts; not intended for general consumption. Per-module sub-paths can not be specified.
* `tasks/<MODULE>` --- a semi-magical mount point which allows access to files in the `tasks` subdirectory of `<MODULE>` --- see the [the docs on file serving](https://puppet.com/docs/puppet/latest/file_serving.html).
- Custom file serving mounts as specified in `fileserver.conf` — see the Puppet docs on
[configuring mount points](https://puppet.com/docs/puppet/latest/file_serving.html).
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

old puppet docs url

- Custom file serving mounts as specified in `fileserver.conf` — see the Puppet docs on
[configuring mount points](https://puppet.com/docs/puppet/latest/file_serving.html).
- `modules/<MODULE>` — allows access to the `files` subdirectory of `<MODULE>` — see the Puppet docs on
[file serving](https://puppet.com/docs/puppet/latest/file_serving.html).
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

old puppet docs url

- `pluginfacts` — merges the `facts.d` directory of every module together. Used for syncing external facts; not
intended for general consumption. Per-module sub-paths cannot be specified.
- `tasks/<MODULE>` — allows access to files in the `tasks` subdirectory of `<MODULE>` — see the Puppet docs on
[file serving](https://puppet.com/docs/puppet/latest/file_serving.html).
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

old puppet docs url

In http_file_metadata.md and http_file_content.md, replace three
puppet.com links in the mount point lists with internal openvox-docs
pages: config_file_fileserver.html for mount point configuration and
file_serving.html for file serving docs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Signed-off-by: Michael Harp <mike@mikeharp.com>
@tuxmea tuxmea merged commit 0204297 into OpenVoxProject:master May 28, 2026
4 checks passed
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.

Migrate HTTP API docs from openvox_8x to openvox-server_8x and restructure nav

2 participants