oaspec/openapi/schema
Types
How additionalProperties is modeled in the AST.
pub type AdditionalProperties {
Forbidden
Untyped
Typed(SchemaRef)
}
Constructors
-
ForbiddenadditionalProperties: false (or absent with no schema)
-
UntypedadditionalProperties: true (accept any JSON value)
-
Typed(SchemaRef)additionalProperties: { schema }
Origin of a schema — user-authored or hoisted during codegen. Hoisted variants carry the call-site context so tooling can explain where synthetic component schemas came from.
pub type OriginKind {
UserAuthored
HoistedProperty(parent: String, property: String)
HoistedArrayItem(parent: String)
HoistedOneOfVariant(parent: String, index: Int)
HoistedAnyOfVariant(parent: String, index: Int)
HoistedAllOfPart(parent: String, index: Int)
HoistedRequestBody(operation_id: String)
HoistedResponse(operation_id: String, status: String)
HoistedParameter(operation_id: String, name: String)
HoistedAdditionalProperties(parent: String)
}
Constructors
-
UserAuthored -
HoistedProperty(parent: String, property: String) -
HoistedArrayItem(parent: String) -
HoistedOneOfVariant(parent: String, index: Int) -
HoistedAnyOfVariant(parent: String, index: Int) -
HoistedAllOfPart(parent: String, index: Int) -
HoistedRequestBody(operation_id: String) -
HoistedResponse(operation_id: String, status: String) -
HoistedParameter(operation_id: String, name: String) -
HoistedAdditionalProperties(parent: String)
Shared metadata for all schema types. Extracted from variants to avoid duplication and ensure composition schemas (allOf/oneOf/anyOf) don’t lose these fields.
pub type SchemaMetadata {
SchemaMetadata(
description: option.Option(String),
nullable: Bool,
deprecated: Bool,
title: option.Option(String),
read_only: Bool,
write_only: Bool,
default: option.Option(value.JsonValue),
example: option.Option(value.JsonValue),
const_value: option.Option(value.JsonValue),
raw_type: option.Option(List(String)),
unsupported_keywords: List(String),
internal: Bool,
provenance: OriginKind,
)
}
Constructors
-
SchemaMetadata( description: option.Option(String), nullable: Bool, deprecated: Bool, title: option.Option(String), read_only: Bool, write_only: Bool, default: option.Option(value.JsonValue), example: option.Option(value.JsonValue), const_value: option.Option(value.JsonValue), raw_type: option.Option(List(String)), unsupported_keywords: List(String), internal: Bool, provenance: OriginKind, )
Represents a JSON Schema object within OpenAPI 3.x.
This is the core building block for all type generation.
All variants carry shared metadata for description, nullable, deprecated.
pub type SchemaObject {
StringSchema(
metadata: SchemaMetadata,
format: option.Option(String),
enum_values: List(String),
min_length: option.Option(Int),
max_length: option.Option(Int),
pattern: option.Option(String),
)
IntegerSchema(
metadata: SchemaMetadata,
format: option.Option(String),
minimum: option.Option(Int),
maximum: option.Option(Int),
exclusive_minimum: option.Option(Int),
exclusive_maximum: option.Option(Int),
multiple_of: option.Option(Int),
)
NumberSchema(
metadata: SchemaMetadata,
format: option.Option(String),
minimum: option.Option(Float),
maximum: option.Option(Float),
exclusive_minimum: option.Option(Float),
exclusive_maximum: option.Option(Float),
multiple_of: option.Option(Float),
)
BooleanSchema(metadata: SchemaMetadata)
ArraySchema(
metadata: SchemaMetadata,
items: SchemaRef,
min_items: option.Option(Int),
max_items: option.Option(Int),
unique_items: Bool,
)
ObjectSchema(
metadata: SchemaMetadata,
properties: dict.Dict(String, SchemaRef),
required: List(String),
additional_properties: AdditionalProperties,
min_properties: option.Option(Int),
max_properties: option.Option(Int),
)
AllOfSchema(metadata: SchemaMetadata, schemas: List(SchemaRef))
OneOfSchema(
metadata: SchemaMetadata,
schemas: List(SchemaRef),
discriminator: option.Option(Discriminator),
)
AnyOfSchema(
metadata: SchemaMetadata,
schemas: List(SchemaRef),
discriminator: option.Option(Discriminator),
)
}
Constructors
-
StringSchema( metadata: SchemaMetadata, format: option.Option(String), enum_values: List(String), min_length: option.Option(Int), max_length: option.Option(Int), pattern: option.Option(String), ) -
IntegerSchema( metadata: SchemaMetadata, format: option.Option(String), minimum: option.Option(Int), maximum: option.Option(Int), exclusive_minimum: option.Option(Int), exclusive_maximum: option.Option(Int), multiple_of: option.Option(Int), ) -
NumberSchema( metadata: SchemaMetadata, format: option.Option(String), minimum: option.Option(Float), maximum: option.Option(Float), exclusive_minimum: option.Option(Float), exclusive_maximum: option.Option(Float), multiple_of: option.Option(Float), ) -
BooleanSchema(metadata: SchemaMetadata) -
ArraySchema( metadata: SchemaMetadata, items: SchemaRef, min_items: option.Option(Int), max_items: option.Option(Int), unique_items: Bool, ) -
ObjectSchema( metadata: SchemaMetadata, properties: dict.Dict(String, SchemaRef), required: List(String), additional_properties: AdditionalProperties, min_properties: option.Option(Int), max_properties: option.Option(Int), ) -
AllOfSchema(metadata: SchemaMetadata, schemas: List(SchemaRef)) -
OneOfSchema( metadata: SchemaMetadata, schemas: List(SchemaRef), discriminator: option.Option(Discriminator), ) -
AnyOfSchema( metadata: SchemaMetadata, schemas: List(SchemaRef), discriminator: option.Option(Discriminator), )
A reference to a schema, either inline or via $ref. Reference carries both the full $ref string and the pre-extracted name (last segment) to eliminate repeated string splitting in codegen.
pub type SchemaRef {
Inline(SchemaObject)
Reference(ref: String, name: String)
}
Constructors
-
Inline(SchemaObject) -
Reference(ref: String, name: String)
Values
pub fn default_metadata() -> SchemaMetadata
Create default metadata with no description, not nullable, not deprecated.
pub fn get_description(
schema: SchemaObject,
) -> option.Option(String)
Get the description from any schema object.
pub fn get_metadata(schema: SchemaObject) -> SchemaMetadata
Extract the shared metadata from any schema variant.
pub fn get_provenance(schema: SchemaObject) -> OriginKind
Read the provenance of a schema. Unhoisted schemas return UserAuthored.
pub fn is_deprecated(schema: SchemaObject) -> Bool
Check if a schema is deprecated.
pub fn make_reference(ref: String) -> SchemaRef
Create a Reference from a $ref string, auto-extracting the name.
pub fn set_internal(schema: SchemaObject) -> SchemaObject
Mark a schema as internal (not part of the public generated API).
pub fn set_provenance(
schema: SchemaObject,
origin: OriginKind,
) -> SchemaObject
Stamp the origin of a hoisted schema onto its metadata so downstream consumers (diagnostics, tooling) can distinguish user-authored schemas from synthetic ones created during the hoist pass.