serve the OpenAPI 3.0 spec at /swagger

Embed openapi/v1/headscale.yaml and point the Swagger UI at it, replacing the
generated Swagger 2.0 document.
This commit is contained in:
Kristoffer Dalby
2026-06-17 16:00:26 +00:00
parent 29fc14dd73
commit e1325fbacd
2 changed files with 6 additions and 6 deletions

View File

@@ -588,7 +588,7 @@ func (h *Headscale) createRouter(apiV1 http.Handler) *chi.Mux {
// TODO(kristoffer): move swagger into a package
r.Get("/swagger", headscale.SwaggerUI)
r.Get("/swagger/v1/openapiv2.json", headscale.SwaggerAPIv1)
r.Get("/swagger/v1/openapi.yaml", headscale.SwaggerAPIv1)
r.Post("/verify", h.VerifyHandler)

View File

@@ -9,8 +9,8 @@ import (
"github.com/rs/zerolog/log"
)
//go:embed gen/openapiv2/headscale/v1/headscale.swagger.json
var apiV1JSON []byte
//go:embed openapi/v1/headscale.yaml
var apiV1Spec []byte
func SwaggerUI(
writer http.ResponseWriter,
@@ -29,7 +29,7 @@ func SwaggerUI(
<script>
window.addEventListener('load', (event) => {
const ui = SwaggerUIBundle({
url: "/swagger/v1/openapiv2.json",
url: "/swagger/v1/openapi.yaml",
dom_id: '#swagger-ui',
presets: [
SwaggerUIBundle.presets.apis,
@@ -85,10 +85,10 @@ func SwaggerAPIv1(
writer http.ResponseWriter,
req *http.Request,
) {
writer.Header().Set("Content-Type", "application/json; charset=utf-8")
writer.Header().Set("Content-Type", "application/yaml; charset=utf-8")
writer.WriteHeader(http.StatusOK)
if _, err := writer.Write(apiV1JSON); err != nil { //nolint:noinlineerr
if _, err := writer.Write(apiV1Spec); err != nil { //nolint:noinlineerr
log.Error().
Caller().
Err(err).