oaspec/openapi/schema

Types

How additionalProperties is modeled in the AST.

pub type AdditionalProperties {
  Forbidden
  Untyped
  Typed(SchemaRef)
}

Constructors

  • Forbidden

    additionalProperties: false (or absent with no schema)

  • Untyped

    additionalProperties: true (accept any JSON value)

  • Typed(SchemaRef)

    additionalProperties: { schema }

OpenAPI discriminator for oneOf/anyOf.

pub type Discriminator {
  Discriminator(
    property_name: String,
    mapping: dict.Dict(String, String),
  )
}

Constructors

  • Discriminator(
      property_name: String,
      mapping: dict.Dict(String, String),
    )

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

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

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

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 is_nullable(schema: SchemaObject) -> Bool

Check if a schema is nullable.

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.

Search Document