module Swagger::V2::DeterministicJSONSchema

A Swagger Schema Object, which is subset of JSON-Schema that's constrainted to be more deterministic. @see github.com/swagger-api/swagger-spec/blob/master/versions/2.0.md#schema-object- Schema Object @see json-schema.org/ JSON-Schema

Public Class Methods

included(base) click to toggle source

@!group Swagger specific extensions @!attribute [rw] discriminator

Swagger Schema field discriminator.
@return String

@!attribute [rw] readOnly

Swagger Schema field readOnly.
@return boolean

@!attribute [rw] xml

Swagger Schema field xml.
@return Object

@!attribute [rw] externalDocs

Swagger Schema field externalDocs.
@return ExternalDocumentation

@!attribute [rw] example

Swagger Schema field example.
@return Object

@!endgroup

# File lib/swagger/v2/deterministic_json_schema.rb, line 93
def self.included(base) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
  # Subset of standard JSON schema
  base.field :$ref, String
  base.field :format, String
  base.field :title, String
  base.field :description, String
  base.field :default, Object
  base.field :multipleOf, Numeric
  base.field :maximum, Numeric
  base.field :exclusiveMaximum, Swagger::Boolean
  base.send(:alias_method, :exclusiveMaximum?, :exclusiveMaximum)
  base.field :minimum, Numeric
  base.field :exclusiveMinimum, Swagger::Boolean
  base.send(:alias_method, :exclusiveMinimum?, :exclusiveMinimum)
  base.field :maxLength, Integer
  base.field :minLength, Integer
  base.field :pattern, String
  base.field :maxItems, Integer
  base.field :minItems, Integer
  base.field :uniqueItems, Swagger::Boolean
  base.send(:alias_method, :uniqueItems?, :uniqueItems)
  base.field :maxProperties, Integer
  base.field :minProperties, Integer
  base.field :required, Swagger::Boolean
  base.send(:alias_method, :required?, :required)
  base.field :enum, Array[Object]
  base.field :type, Object

  # Swagger extensions to JSON schema :\
  base.field :discriminator, String
  base.field :readOnly, Swagger::Boolean
  base.field :xml, Object # TODO: Swagger XML object / XML support
  base.field :externalDocs, Object # TODO: ExternalDocumentation class
  base.field :example, Object
end