Module: JSONSchemer::OpenAPI31::Meta

Defined in:
lib/json_schemer/openapi31/meta.rb

Constant Summary collapse

BASE =
{
  '$id' => 'https://spec.openapis.org/oas/3.1/meta/base',
  '$schema' => 'https://json-schema.org/draft/2020-12/schema',

  'title' => 'OAS Base vocabulary',
  'description' => 'A JSON Schema Vocabulary used in the OpenAPI Schema Dialect',

  '$vocabulary' => {
    'https://spec.openapis.org/oas/3.1/vocab/base' => true
  },

  '$dynamicAnchor' => 'meta',

  'type' => ['object', 'boolean'],
  'properties' => {
    'example' => true,
    'discriminator' => { '$ref' => '#/$defs/discriminator' },
    'externalDocs' => { '$ref' => '#/$defs/external-docs' },
    'xml' => { '$ref' => '#/$defs/xml' }
  },

  '$defs' => {
    'extensible' => {
      'patternProperties' => {
        '^x-' => true
      }
    },

    'discriminator' => {
      '$ref' => '#/$defs/extensible',
      'type' => 'object',
      'properties' => {
        'propertyName' => {
          'type' => 'string'
        },
        'mapping' => {
          'type' => 'object',
          'additionalProperties' => {
            'type' => 'string'
          }
        }
      },
      'required' => ['propertyName'],
      'unevaluatedProperties' => false
    },

    'external-docs' => {
      '$ref' => '#/$defs/extensible',
      'type' => 'object',
      'properties' => {
        'url' => {
          'type' => 'string',
          'format' => 'uri-reference'
        },
        'description' => {
          'type' => 'string'
        }
      },
      'required' => ['url'],
      'unevaluatedProperties' => false
    },

    'xml' => {
      '$ref' => '#/$defs/extensible',
      'type' => 'object',
      'properties' => {
        'name' => {
          'type' => 'string'
        },
        'namespace' => {
          'type' => 'string',
          'format' => 'uri'
        },
        'prefix' => {
          'type' => 'string'
        },
        'attribute' => {
          'type' => 'boolean'
        },
        'wrapped' => {
          'type' => 'boolean'
        }
      },
      'unevaluatedProperties' => false
    }
  }
}
SCHEMAS =
Draft202012::Meta::SCHEMAS.merge(
  Draft202012::BASE_URI => Draft202012::SCHEMA,
  URI('https://spec.openapis.org/oas/3.1/meta/base') => BASE
)