Skip to content

OpenAPI Schemas ​

Typelizer can generate OpenAPI component schemas from your serializers. This is useful for documenting your API or integrating with tools like rswag.

Generate All Schemas ​

Get all schemas as a hash:

ruby
Typelizer.openapi_schemas
# => {
#   "Post" => {
#     type: :object,
#     properties: {
#       id: { type: :integer },
#       title: { type: :string },
#       published_at: { type: :string, format: :"date-time", nullable: true }
#     },
#     required: [:id, :title]
#   },
#   "Author" => { ... }
# }

OpenAPI 3.1 Support ​

By default, schemas are generated for OpenAPI 3.0. Pass openapi_version: "3.1" for OpenAPI 3.1 output (e.g., type: [:string, :null] instead of nullable: true):

ruby
Typelizer.openapi_schemas(openapi_version: "3.1")

Single Interface Schema ​

Generate a schema for a single interface:

ruby
interfaces = Typelizer.interfaces
post_interface = interfaces.find { |i| i.name == "Post" }
Typelizer::OpenAPI.schema_for(post_interface)
Typelizer::OpenAPI.schema_for(post_interface, openapi_version: "3.1")

Writer-Specific Schemas ​

Pass a writer_name to generate schemas based on a specific writer's configuration (e.g., a camelCase writer):

ruby
Typelizer.openapi_schemas(writer_name: :camel_case)

Type Mapping ​

Column types are mapped to OpenAPI types automatically. Enums, nullable fields, arrays, deprecated flags, and $ref associations are all handled.

See the Type Mapping Reference for the full mapping table.