Skip to content

Releases: speakeasy-api/openapi

v1.11.1

26 Nov 08:23
6efa364

Choose a tag to compare

OpenAPI CLI v1.11.1

This release includes binaries for Linux, macOS, and Windows on both x86_64 and ARM64 architectures.

Installation

Download the appropriate binary for your platform from the assets below, extract it, and add it to your PATH.

Changes

Changelog

Bug fixes

  • ee23a08 fix: correct array sync to preserve identity matching during subset operations

Others

  • 6efa364 Merge pull request #78 from speakeasy-api/subomi/fix/fix-syncing-array
  • 991c710 refactor: clean up array subset sync test

Full Changelog: v1.11.0...v1.11.1

Released by GoReleaser.

v1.11.0

17 Oct 05:21
4215825

Choose a tag to compare

What's New

Swagger 2.0 Support

This release adds comprehensive support for Swagger 2.0 specifications including full parsing, validation, walking, and an upgrade utility to convert to OpenAPI 3.0.

Core Features:

  • Complete Swagger 2.0 data models with marshalling support
  • Full validation against Swagger 2.0 specification
  • Walking API to traverse Swagger documents with the same pattern as OpenAPI
  • Comprehensive test coverage with 227 tests including round-trip testing with real-world specs (Petstore, DocuSign, Docker Engine API)

Upgrade Utility

Automatic conversion from Swagger 2.0 to OpenAPI 3.0 with proper schema mapping:

  • swagger: "2.0"openapi: "3.0.0"
  • host/basePath/schemesservers
  • definitionscomponents.schemas
  • parameters (body) → components.requestBodies
  • securityDefinitionscomponents.securitySchemes
  • Request/response schema wrapping in content objects
  • Reference rewriting (#/definitions/#/components/schemas/)
  • 17 upgrade tests covering common and edge case scenarios

CLI Commands

  • openapi swagger upgrade - Convert Swagger 2.0 to OpenAPI 3.0
  • openapi swagger validate - Validate Swagger 2.0 documents

Additional Improvements

  • JSON marshalling: Fixed nul character handling to use proper JSON Unicode escapes (\u0000) instead of Go-style hex escapes (\x00)
  • Code quality: Resolved all linting issues (gocritic, staticcheck, unparam, gosec, nilaway)
  • Test improvements: All tests use t.Context() for better lifecycle management

Testing

  • ✅ All 227 swagger tests pass
  • ✅ All 513 total tests pass (including JSON Schema test suite)
  • ✅ Linting passes with 0 issues
  • ✅ Round-trip testing with real-world Swagger specs validates correctness

Breaking Changes

None - this is purely additive functionality.

Full Changelog: v1.10.1...v1.11.0

OpenAPI CLI v1.11.0

This release includes binaries for Linux, macOS, and Windows on both x86_64 and ARM64 architectures.

Installation

Download the appropriate binary for your platform from the assets below, extract it, and add it to your PATH.

Changes

Changelog

Features

  • 4215825 feat: add Swagger 2.0 support with upgrade to OpenAPI 3.0 utility (#66)

Full Changelog: v1.10.1...v1.11.0

Released by GoReleaser.

v1.10.1

16 Oct 06:38

Choose a tag to compare

Release Notes

Fixes

  • Snip TUI select-all/deselect bug
  • Clean reachability and tag cleanup
  • Documentation updates

Related Pull Request

OpenAPI CLI v1.10.1

This release includes binaries for Linux, macOS, and Windows on both x86_64 and ARM64 architectures.

Installation

Download the appropriate binary for your platform from the assets below, extract it, and add it to your PATH.

Changes

Changelog

Bug fixes

  • c22c17a fix: snip TUI select-all/deselect bug; clean reachability and tag cleanup; docs (#65)

Others

  • ed689a1 Create release notes for version based on PR #65

Full Changelog: v1.10.0...v1.10.1

Released by GoReleaser.

v1.10.0

14 Oct 23:00
1390319

Choose a tag to compare

🎉 New Features

Interactive Commands

This release adds two new powerful interactive commands for working with OpenAPI specifications:

📖

  • Browse all API operations in an interactive terminal UI
  • vim-style navigation (j/k, gg/G, Ctrl-D/U)
  • Color-coded HTTP methods (GET=green, POST=blue, DELETE=red, etc.)
  • Fold/unfold operation details with Enter
  • View parameters, request bodies, and responses
  • Help modal with ?

✂️ openapi spec snip

  • Remove operations interactively or via CLI flags
  • Interactive mode: Browse and select operations with Space key
  • CLI mode: --operationId ID1,ID2 or --operation /path:METHOD
  • Automatic cleanup of unused components
  • Visual feedback with dual-icon system

Library Additions

  • New function: openapi.Snip() - Programmatically remove operations from OpenAPI documents
  • Reusable TUI framework - Extensible terminal UI system for future commands

Infrastructure Improvements

  • Go workspace support (go.work) - Multi-module build system
  • TUI dependencies isolated in cmd/openapi/go.mod
  • Enhanced test script with summary statistics display

📦 What's Changed

Full Changelog: v1.9.0...v1.10.0

🙏 Credits

Special thanks to the oq project for design inspiration!

OpenAPI CLI v1.10.0

This release includes binaries for Linux, macOS, and Windows on both x86_64 and ARM64 architectures.

Installation

Download the appropriate binary for your platform from the assets below, extract it, and add it to your PATH.

Changes

Changelog

Features

  • 1390319 feat: add interactive explore and snip commands for OpenAPI specifications (#64)

Full Changelog: v1.9.0...v1.10.0

Released by GoReleaser.

v1.9.0

14 Oct 04:02
0641013

Choose a tag to compare

🔄 Refactor: Extension Pattern Filtering

This release refactors the sanitize functionality's extension filtering to support whitelist (Keep) and blacklist (Remove) modes, making it much easier to maintain sanitization configurations.

🌟 Highlights

Addresses Community Feedback: #62 (comment)

"sanitization works only by excluding something, not including. If so, for many cases it will be harder to maintain... Including will be much easier than excluding" - @zdunecki

Now you can use whitelist mode to keep only specific extensions, making configs much easier to maintain!

✨ New Filtering Modes

  1. Whitelist mode - Keep only matching extensions
  2. Blacklist mode - Remove only matching extensions (existing behavior, new format)
  3. Combined mode - Whitelist overrides blacklist for precise control
  4. Default - Remove all extensions (unchanged)

📝 Configuration Examples

Whitelist (easier to maintain):

extensionPatterns:
  keep:
    - "x-speakeasy-*"  # Keep only Speakeasy extensions

Blacklist:

extensionPatterns:
  remove:
    - "x-go-*"
    - "x-internal-*"

Combined (whitelist overrides blacklist):

extensionPatterns:
  keep:
    - "x-speakeasy-schema-*"  # Keep only schema extensions
  remove:
    - "x-speakeasy-*"  # Remove all other Speakeasy extensions

⚠️ Breaking Changes

Configuration format changed from:

extensionPatterns:
  - "x-go-*"

To:

extensionPatterns:
  remove:
    - "x-go-*"

Note: This is a fast follow after v1.8.0 (released 3 hours ago), so impact should be minimal.

🔗 Pull Request

  • #63 - Full details and implementation

📦 What's Changed

  • Refactored extension filtering architecture with ExtensionFilter struct
  • Added whitelist (Keep) and blacklist (Remove) pattern support
  • Whitelist takes precedence in combined mode
  • Updated all documentation and examples
  • Added comprehensive test coverage (6 new tests)
  • Fixed linter issues (gocritic, nilaway)

Full Changelog: v1.8.0...v1.9.0

OpenAPI CLI v1.9.0

This release includes binaries for Linux, macOS, and Windows on both x86_64 and ARM64 architectures.

Installation

Download the appropriate binary for your platform from the assets below, extract it, and add it to your PATH.

Changes

Changelog

Others

  • 0641013 refactor: improve extension pattern filtering architecture (#63)

Full Changelog: v1.8.0...v1.9.0

Released by GoReleaser.

v1.8.0

14 Oct 00:43
0bd0aca

Choose a tag to compare

🧹 New Feature: Sanitize Command

This release introduces a new sanitize command that removes non-standard extensions and unknown properties from OpenAPI specifications, helping you create clean, standards-compliant API documentation.

✨ Key Features

  • Extension Removal: Automatically removes all x-* extensions and other non-standard properties
  • Pattern Matching: Keep specific extensions using glob patterns (e.g., x-speakeasy-*)
  • Flexible Configuration: Use command-line flags or YAML config files
  • Component Cleanup: Optional removal of unused component schemas
  • JSON Schema Support: Also cleans non-standard properties from JSON Schema definitions

📖 Usage

Basic usage - remove all extensions:

openapi sanitize openapi.yaml

Keep specific extensions:

openapi sanitize openapi.yaml --keep-extensions "x-speakeasy-*,x-internal-*"

Use configuration file:

openapi sanitize openapi.yaml --config sanitize-config.yaml

Example config file:

extensions:
  keep:
    - x-speakeasy-*
    - x-internal-*
components:
  removeUnused: true

📚 Documentation

Full documentation and examples are available in openapi/cmd/README.md.

🔧 Implementation Details

  • Added Sanitize() function in openapi/sanitize.go
  • Added CLI command in openapi/cmd/sanitize.go
  • 10 comprehensive test cases with various scenarios
  • Integrated with CI pipeline

🙏 Credits

This feature was requested and inspired by @zdunecki in Issue #46.


Full Changelog: v1.7.12...v1.8.0

OpenAPI CLI v1.8.0

This release includes binaries for Linux, macOS, and Windows on both x86_64 and ARM64 architectures.

Installation

Download the appropriate binary for your platform from the assets below, extract it, and add it to your PATH.

Changes

Changelog

Features

  • 0bd0aca feat: add sanitize command to remove extensions and clean OpenAPI specs (#59)

Bug fixes


Full Changelog: v1.7.12...v1.8.0

Released by GoReleaser.

v1.7.12

13 Oct 06:55
70b4b68

Choose a tag to compare

What's Changed

Bug Fixes

  • Fixed parent directory references (../) not being bundled correctly during the bundling process (#58)
  • References now properly converted to absolute paths for consistent deduplication and proper bundling
  • Fixed issue where ../ references remained in bundled output instead of being resolved

Code Quality Improvements

  • Added helper functions to eliminate code duplication:
    • isInternalReference() - eliminates ~22 lines of duplication
    • extractSimpleNameFromReference() - eliminates ~60 lines of duplication
    • findCircularReferenceMatch() - eliminates ~26 lines of duplication
  • Removed unused parentLocation parameter (~110 lines total reduction)

Tests

  • Added comprehensive test case for issue #50 with parent directory references
  • All bundle and inline tests passing (8/8)

Full Changelog: v1.7.11...v1.7.12

Fixes #50

OpenAPI CLI v1.7.12

This release includes binaries for Linux, macOS, and Windows on both x86_64 and ARM64 architectures.

Installation

Download the appropriate binary for your platform from the assets below, extract it, and add it to your PATH.

Changes

Changelog

Bug fixes

  • 70b4b68 fix: convert references to absolute paths for proper parent directory handling and deduplication (#58)

Others

  • 40abaee chore(deps): bump jsonschema/oas3/tests/testsuite (#56)

Full Changelog: v1.7.11...v1.7.12

Released by GoReleaser.

v1.7.11

09 Oct 01:18
16ce80e

Choose a tag to compare

Changes

  • chore(jsonschema): Add convenience methods for schema and boolean value access (#57)
    • Added semantic methods IsSchema(), GetSchema(), IsBool(), GetBool() to replace less intuitive Left/Right terminology
    • Updated internal usage throughout the jsonschema/oas3 package
    • Improved API clarity and developer experience

Full Changelog

v1.7.10...v1.7.11

OpenAPI CLI v1.7.11

This release includes binaries for Linux, macOS, and Windows on both x86_64 and ARM64 architectures.

Installation

Download the appropriate binary for your platform from the assets below, extract it, and add it to your PATH.

Changes

Changelog

Others

  • 16ce80e chore(jsonschema): add convenience methods for schema and boolean value access (#57)

Full Changelog: v1.7.10...v1.7.11

Released by GoReleaser.

v1.7.10

08 Oct 00:07

Choose a tag to compare

Full Changelog: v1.7.9...v1.7.10

OpenAPI CLI v1.7.10

This release includes binaries for Linux, macOS, and Windows on both x86_64 and ARM64 architectures.

Installation

Download the appropriate binary for your platform from the assets below, extract it, and add it to your PATH.

Changes

Changelog

Bug fixes

  • c42a384 fix: use model's RootNode instead of parameter for consistency in GetMapKeyNodeOrRoot methods

Full Changelog: v1.7.9...v1.7.10

Released by GoReleaser.

v1.7.9

07 Oct 23:49

Choose a tag to compare

Full Changelog: v1.7.8...v1.7.9

OpenAPI CLI v1.7.9

This release includes binaries for Linux, macOS, and Windows on both x86_64 and ARM64 architectures.

Installation

Download the appropriate binary for your platform from the assets below, extract it, and add it to your PATH.

Changes

Changelog

Bug fixes

  • b1bc1fe fix: introduced methods for accessing map key nodes for getting line numbers and improved agent testing behaviour

Full Changelog: v1.7.8...v1.7.9

Released by GoReleaser.