oaspec/openapi/schema

Types

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),
    )

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(String),
    example: option.Option(String),
  )
}

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: option.Option(SchemaRef),
    additional_properties_untyped: Bool,
    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 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.

Search Document