Skip to content

Component definitions excluded with names starting with x- #503

@cubahno

Description

@cubahno

libopenapi excludes component definitions (parameters, headers, schemas, etc.) whose names start with x-, treating them as extensions rather than valid component definitions.

Environment:
libopenapi version: v0.31.2
Go version: 1.25.5

Reproduction:

package main

import (
	"fmt"
	"os"

	"github.com/pb33f/libopenapi"
	"github.com/pb33f/libopenapi/datamodel"
)

func main() {
	data, err := os.ReadFile("spec.yml")
	if err != nil {
		panic(err)
	}

	// Test with default config (ExcludeExtensionRefs: false)
	docConfig := &datamodel.DocumentConfiguration{
		SkipCircularReferenceCheck: true,
	}

	doc, _ := libopenapi.NewDocumentWithConfiguration(data, docConfig)
	model, _ := doc.BuildV3Model()

	fmt.Printf("Parameters count: %d\n", model.Model.Components.Parameters.Len())
	for name := range model.Model.Components.Parameters.FromOldest() {
		fmt.Printf("  - %s\n", name)
	}

	fmt.Printf("Headers count: %d\n", model.Model.Components.Headers.Len())
	for name := range model.Model.Components.Headers.FromOldest() {
		fmt.Printf("  - %s\n", name)
	}

	fmt.Printf("Schemas count: %d\n", model.Model.Components.Schemas.Len())
	for name := range model.Model.Components.Schemas.FromOldest() {
		fmt.Printf("  - %s\n", name)
	}

	fmt.Printf("RequestBodies count: %d\n", model.Model.Components.RequestBodies.Len())
	for name := range model.Model.Components.RequestBodies.FromOldest() {
		fmt.Printf("  - %s\n", name)
	}

	fmt.Printf("Responses count: %d\n", model.Model.Components.Responses.Len())
	for name := range model.Model.Components.Responses.FromOldest() {
		fmt.Printf("  - %s\n", name)
	}
}

spec.yml

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions