Skip to content

Releases: speakeasy-api/openapi

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.

v1.7.8

07 Oct 03:06

Choose a tag to compare

Changes

  • Add YAMLToJSONCompatibleGoType function to convert YAML nodes to JSON-compatible Go types
  • Add comprehensive test coverage for json package functions
  • Fix YAML merge key handling to properly merge referenced maps
  • Update mise test task to support package-specific test execution

Bug Fixes

  • YAML merge keys are now properly handled, merging referenced map values instead of treating merge key as a literal key

Testing

  • Added 34 new tests with full coverage of YAML-to-JSON conversion scenarios
  • All tests follow project conventions with parallel execution and testify assertions

OpenAPI CLI v1.7.8

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

  • a30e6a1 fix(json): add YAMLToJSONCompatibleGoType, tests, and fix YAML merge keys

Full Changelog: v1.7.7...v1.7.8

Released by GoReleaser.

v1.7.7

03 Oct 07:28

Choose a tag to compare

Full Changelog: v1.7.6...v1.7.7

OpenAPI CLI v1.7.7

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

  • 903dfce fix: fixed issues with navigating with jsonpointers through unknown properties

Full Changelog: v1.7.6...v1.7.7

Released by GoReleaser.

v1.7.6

03 Oct 02:45

Choose a tag to compare

Full Changelog: v1.7.5...v1.7.6

OpenAPI CLI v1.7.6

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


Full Changelog: v1.7.5...v1.7.6

Released by GoReleaser.