schema

package
v0.1.6 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Aug 21, 2025 License: Apache-2.0 Imports: 0 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type JSON

type JSON struct {
	// Core vocabulary generally not used in Lacquer
	// @TODO: remove these once we know we don't need them
	Schema        string          `json:"$schema,omitempty"`
	ID            string          `json:"$id,omitempty"`
	Ref           string          `json:"$ref,omitempty"`
	Anchor        string          `json:"$anchor,omitempty"`
	DynamicRef    string          `json:"$dynamicRef,omitempty"`
	DynamicAnchor string          `json:"$dynamicAnchor,omitempty"`
	Definitions   map[string]JSON `json:"$defs,omitempty"`
	Comment       string          `json:"$comment,omitempty"`

	// Type constraints
	Type  interface{}   `json:"type,omitempty"`
	Enum  []interface{} `json:"enum,omitempty"`
	Const interface{}   `json:"const,omitempty"`

	// String validation
	MinLength int    `json:"minLength,omitempty"`
	MaxLength int    `json:"maxLength,omitempty"`
	Pattern   string `json:"pattern,omitempty"`
	Format    string `json:"format,omitempty"`

	// Numeric validation
	MultipleOf       float64 `json:"multipleOf,omitempty"`
	Minimum          float64 `json:"minimum,omitempty"`
	ExclusiveMinimum float64 `json:"exclusiveMinimum,omitempty"`
	Maximum          float64 `json:"maximum,omitempty"`
	ExclusiveMaximum float64 `json:"exclusiveMaximum,omitempty"`

	// Object validation
	Properties           map[string]JSON `json:"properties,omitempty"`
	PatternProperties    map[string]JSON `json:"patternProperties,omitempty"`
	AdditionalProperties interface{}     `json:"additionalProperties,omitempty"` // bool or JSON
	Required             []string        `json:"required,omitempty"`
	PropertyNames        *JSON           `json:"propertyNames,omitempty"`
	MinProperties        int             `json:"minProperties,omitempty"`
	MaxProperties        int             `json:"maxProperties,omitempty"`

	// Array validation
	Items       interface{} `json:"items,omitempty"` // JSON or bool
	PrefixItems []JSON      `json:"prefixItems,omitempty"`
	Contains    *JSON       `json:"contains,omitempty"`
	MinContains int         `json:"minContains,omitempty"`
	MaxContains int         `json:"maxContains,omitempty"`
	MinItems    int         `json:"minItems,omitempty"`
	MaxItems    int         `json:"maxItems,omitempty"`
	UniqueItems bool        `json:"uniqueItems,omitempty"`

	// Combining schemas
	AllOf []JSON `json:"allOf,omitempty"`
	AnyOf []JSON `json:"anyOf,omitempty"`
	OneOf []JSON `json:"oneOf,omitempty"`
	Not   *JSON  `json:"not,omitempty"`

	// Metadata
	Title       string        `json:"title,omitempty"`
	Description string        `json:"description,omitempty"`
	Default     interface{}   `json:"default,omitempty"`
	ReadOnly    bool          `json:"readOnly,omitempty"`
	WriteOnly   bool          `json:"writeOnly,omitempty"`
	Examples    []interface{} `json:"examples,omitempty"`
}

JSON represents a JSON Schema object

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL