From c3143a5029fe2ca3b7f7ce9605260508eaad1049 Mon Sep 17 00:00:00 2001 From: Virgil Date: Thu, 2 Apr 2026 03:09:28 +0000 Subject: [PATCH] feat(openapi): declare json schema dialect Co-Authored-By: Virgil --- openapi.go | 5 ++++- openapi_test.go | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/openapi.go b/openapi.go index 895e97b..453ecf4 100644 --- a/openapi.go +++ b/openapi.go @@ -46,6 +46,8 @@ type preparedRouteGroup struct { descs []RouteDescription } +const openAPIDialect = "https://spec.openapis.org/oas/3.1/dialect/base" + // Build generates the complete OpenAPI 3.1 JSON spec. // Groups implementing DescribableGroup contribute endpoint documentation. // Other groups are listed as tags only. @@ -57,7 +59,8 @@ func (sb *SpecBuilder) Build(groups []RouteGroup) ([]byte, error) { prepared := prepareRouteGroups(groups) spec := map[string]any{ - "openapi": "3.1.0", + "openapi": "3.1.0", + "jsonSchemaDialect": openAPIDialect, "info": map[string]any{ "title": sb.Title, "description": sb.Description, diff --git a/openapi_test.go b/openapi_test.go index 77f577e..601fba6 100644 --- a/openapi_test.go +++ b/openapi_test.go @@ -113,6 +113,9 @@ func TestSpecBuilder_Good_EmptyGroups(t *testing.T) { if spec["openapi"] != "3.1.0" { t.Fatalf("expected openapi=3.1.0, got %v", spec["openapi"]) } + if spec["jsonSchemaDialect"] != "https://spec.openapis.org/oas/3.1/dialect/base" { + t.Fatalf("expected jsonSchemaDialect to use the OpenAPI 3.1 base dialect, got %v", spec["jsonSchemaDialect"]) + } // Verify /health path exists. paths := spec["paths"].(map[string]any)