OpenAPI 3.0+ supports nesting parameters schema under a content property - that allows for defining json-formatted parameter schemas. See:
We're getting errors though when attempting to load a parameter defined that way.
Reproducing:
# schema.yaml
---
openapi: 3.0.3
info:
title: Test API
version: '1.0'
servers:
- url: http://localhost:3000
paths:
/users/search:
get:
parameters:
- name: filters
in: query
content:
application/json:
schema:
type: object
properties:
from_date:
type: string
to_date:
type: string
responses:
'200':
content:
application/json:
schema:
type: object
properties:
id:
type: integer
name:
type: string
created_at:
type: string
$ ruby -r'openapi_first' -e 'OpenapiFirst.load("schema.yaml")'
/Users/Drowze/.gems/4.0.0/gems/openapi_first-3.3.1/lib/openapi_first/builder.rb:113:in 'block in OpenapiFirst::Builder#resolve_parameters': undefined method 'resolved' for nil (NoMethodError)
result['schema'] = parameter['schema'].resolved
^^^^^^^^^
from /Users/Drowze/.gems/4.0.0/gems/openapi_first-3.3.1/lib/openapi_first/builder.rb:111:in 'Array#map'
from /Users/Drowze/.gems/4.0.0/gems/openapi_first-3.3.1/lib/openapi_first/builder.rb:111:in 'OpenapiFirst::Builder#resolve_parameters'
from /Users/Drowze/.gems/4.0.0/gems/openapi_first-3.3.1/lib/openapi_first/builder.rb:99:in 'OpenapiFirst::Builder#parse_parameters'
from /Users/Drowze/.gems/4.0.0/gems/openapi_first-3.3.1/lib/openapi_first/builder.rb:70:in 'block (2 levels) in OpenapiFirst::Builder#router'
from /Users/Drowze/.gems/4.0.0/gems/openapi_first-3.3.1/lib/openapi_first/builder.rb:67:in 'Array#map'
from /Users/Drowze/.gems/4.0.0/gems/openapi_first-3.3.1/lib/openapi_first/builder.rb:67:in 'block in OpenapiFirst::Builder#router'
from /Users/Drowze/.gems/4.0.0/gems/openapi_first-3.3.1/lib/openapi_first/ref_resolver.rb:141:in 'block in OpenapiFirst::RefResolver::Hash#each'
from /Users/Drowze/.gems/4.0.0/gems/openapi_first-3.3.1/lib/openapi_first/ref_resolver.rb:140:in 'Hash#each_key'
from /Users/Drowze/.gems/4.0.0/gems/openapi_first-3.3.1/lib/openapi_first/ref_resolver.rb:140:in 'OpenapiFirst::RefResolver::Hash#each'
from /Users/Drowze/.gems/4.0.0/gems/openapi_first-3.3.1/lib/openapi_first/builder.rb:65:in 'OpenapiFirst::Builder#router'
from /Users/Drowze/.gems/4.0.0/gems/openapi_first-3.3.1/lib/openapi_first/builder.rb:23:in 'OpenapiFirst::Builder.build_router'
from /Users/Drowze/.gems/4.0.0/gems/openapi_first-3.3.1/lib/openapi_first/definition.rb:32:in 'OpenapiFirst::Definition#initialize'
from /Users/Drowze/.gems/4.0.0/gems/openapi_first-3.3.1/lib/openapi_first.rb:79:in 'Class#new'
from /Users/Drowze/.gems/4.0.0/gems/openapi_first-3.3.1/lib/openapi_first.rb:79:in 'OpenapiFirst.parse'
from /Users/Drowze/.gems/4.0.0/gems/openapi_first-3.3.1/lib/openapi_first.rb:70:in 'OpenapiFirst.load'
My environment:
Ruby version: ruby 4.0.2 (2026-03-17 revision d3da9fec82) +PRISM [arm64-darwin25]
openapi_first version: 3.3.1
OpenAPI 3.0+ supports nesting parameters schema under a
contentproperty - that allows for defining json-formatted parameter schemas. See:We're getting errors though when attempting to load a parameter defined that way.
Reproducing:
My environment: