# frozen_string_literal: true module JSONSchemer module OpenAPI30 module Document SCHEMA = { 'id' => 'https://spec.openapis.org/oas/3.0/schema/2021-09-28', '$schema' => 'http://json-schema.org/draft-04/schema#', 'description' => 'The description of OpenAPI v3.0.x documents, as defined by https://spec.openapis.org/oas/v3.0.3', 'type' => 'object', 'required' => [ 'openapi', 'info', 'paths' ], 'properties' => { 'openapi' => { 'type' => 'string', 'pattern' => '^3\.0\.\d(-.+)?$' }, 'info' => { '$ref' => '#/definitions/Info' }, 'externalDocs' => { '$ref' => '#/definitions/ExternalDocumentation' }, 'servers' => { 'type' => 'array', 'items' => { '$ref' => '#/definitions/Server' } }, 'security' => { 'type' => 'array', 'items' => { '$ref' => '#/definitions/SecurityRequirement' } }, 'tags' => { 'type' => 'array', 'items' => { '$ref' => '#/definitions/Tag' }, 'uniqueItems' => true }, 'paths' => { '$ref' => '#/definitions/Paths' }, 'components' => { '$ref' => '#/definitions/Components' } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false, 'definitions' => { 'Reference' => { 'type' => 'object', 'required' => [ '$ref' ], 'patternProperties' => { '^\$ref$' => { 'type' => 'string', 'format' => 'uri-reference' } } }, 'Info' => { 'type' => 'object', 'required' => [ 'title', 'version' ], 'properties' => { 'title' => { 'type' => 'string' }, 'description' => { 'type' => 'string' }, 'termsOfService' => { 'type' => 'string', 'format' => 'uri-reference' }, 'contact' => { '$ref' => '#/definitions/Contact' }, 'license' => { '$ref' => '#/definitions/License' }, 'version' => { 'type' => 'string' } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'Contact' => { 'type' => 'object', 'properties' => { 'name' => { 'type' => 'string' }, 'url' => { 'type' => 'string', 'format' => 'uri-reference' }, 'email' => { 'type' => 'string', 'format' => 'email' } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'License' => { 'type' => 'object', 'required' => [ 'name' ], 'properties' => { 'name' => { 'type' => 'string' }, 'url' => { 'type' => 'string', 'format' => 'uri-reference' } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'Server' => { 'type' => 'object', 'required' => [ 'url' ], 'properties' => { 'url' => { 'type' => 'string' }, 'description' => { 'type' => 'string' }, 'variables' => { 'type' => 'object', 'additionalProperties' => { '$ref' => '#/definitions/ServerVariable' } } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'ServerVariable' => { 'type' => 'object', 'required' => [ 'default' ], 'properties' => { 'enum' => { 'type' => 'array', 'items' => { 'type' => 'string' } }, 'default' => { 'type' => 'string' }, 'description' => { 'type' => 'string' } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'Components' => { 'type' => 'object', 'properties' => { 'schemas' => { 'type' => 'object', 'patternProperties' => { '^[a-zA-Z0-9\.\-_]+$' => { 'oneOf' => [ { '$ref' => '#/definitions/Schema' }, { '$ref' => '#/definitions/Reference' } ] } } }, 'responses' => { 'type' => 'object', 'patternProperties' => { '^[a-zA-Z0-9\.\-_]+$' => { 'oneOf' => [ { '$ref' => '#/definitions/Reference' }, { '$ref' => '#/definitions/Response' } ] } } }, 'parameters' => { 'type' => 'object', 'patternProperties' => { '^[a-zA-Z0-9\.\-_]+$' => { 'oneOf' => [ { '$ref' => '#/definitions/Reference' }, { '$ref' => '#/definitions/Parameter' } ] } } }, 'examples' => { 'type' => 'object', 'patternProperties' => { '^[a-zA-Z0-9\.\-_]+$' => { 'oneOf' => [ { '$ref' => '#/definitions/Reference' }, { '$ref' => '#/definitions/Example' } ] } } }, 'requestBodies' => { 'type' => 'object', 'patternProperties' => { '^[a-zA-Z0-9\.\-_]+$' => { 'oneOf' => [ { '$ref' => '#/definitions/Reference' }, { '$ref' => '#/definitions/RequestBody' } ] } } }, 'headers' => { 'type' => 'object', 'patternProperties' => { '^[a-zA-Z0-9\.\-_]+$' => { 'oneOf' => [ { '$ref' => '#/definitions/Reference' }, { '$ref' => '#/definitions/Header' } ] } } }, 'securitySchemes' => { 'type' => 'object', 'patternProperties' => { '^[a-zA-Z0-9\.\-_]+$' => { 'oneOf' => [ { '$ref' => '#/definitions/Reference' }, { '$ref' => '#/definitions/SecurityScheme' } ] } } }, 'links' => { 'type' => 'object', 'patternProperties' => { '^[a-zA-Z0-9\.\-_]+$' => { 'oneOf' => [ { '$ref' => '#/definitions/Reference' }, { '$ref' => '#/definitions/Link' } ] } } }, 'callbacks' => { 'type' => 'object', 'patternProperties' => { '^[a-zA-Z0-9\.\-_]+$' => { 'oneOf' => [ { '$ref' => '#/definitions/Reference' }, { '$ref' => '#/definitions/Callback' } ] } } } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'Schema' => { 'type' => 'object', 'properties' => { 'title' => { 'type' => 'string' }, 'multipleOf' => { 'type' => 'number', 'minimum' => 0, 'exclusiveMinimum' => true }, 'maximum' => { 'type' => 'number' }, 'exclusiveMaximum' => { 'type' => 'boolean', 'default' => false }, 'minimum' => { 'type' => 'number' }, 'exclusiveMinimum' => { 'type' => 'boolean', 'default' => false }, 'maxLength' => { 'type' => 'integer', 'minimum' => 0 }, 'minLength' => { 'type' => 'integer', 'minimum' => 0, 'default' => 0 }, 'pattern' => { 'type' => 'string', 'format' => 'regex' }, 'maxItems' => { 'type' => 'integer', 'minimum' => 0 }, 'minItems' => { 'type' => 'integer', 'minimum' => 0, 'default' => 0 }, 'uniqueItems' => { 'type' => 'boolean', 'default' => false }, 'maxProperties' => { 'type' => 'integer', 'minimum' => 0 }, 'minProperties' => { 'type' => 'integer', 'minimum' => 0, 'default' => 0 }, 'required' => { 'type' => 'array', 'items' => { 'type' => 'string' }, 'minItems' => 1, 'uniqueItems' => true }, 'enum' => { 'type' => 'array', 'items' => { }, 'minItems' => 1, 'uniqueItems' => false }, 'type' => { 'type' => 'string', 'enum' => [ 'array', 'boolean', 'integer', 'number', 'object', 'string' ] }, 'not' => { 'oneOf' => [ { '$ref' => '#/definitions/Schema' }, { '$ref' => '#/definitions/Reference' } ] }, 'allOf' => { 'type' => 'array', 'items' => { 'oneOf' => [ { '$ref' => '#/definitions/Schema' }, { '$ref' => '#/definitions/Reference' } ] } }, 'oneOf' => { 'type' => 'array', 'items' => { 'oneOf' => [ { '$ref' => '#/definitions/Schema' }, { '$ref' => '#/definitions/Reference' } ] } }, 'anyOf' => { 'type' => 'array', 'items' => { 'oneOf' => [ { '$ref' => '#/definitions/Schema' }, { '$ref' => '#/definitions/Reference' } ] } }, 'items' => { 'oneOf' => [ { '$ref' => '#/definitions/Schema' }, { '$ref' => '#/definitions/Reference' } ] }, 'properties' => { 'type' => 'object', 'additionalProperties' => { 'oneOf' => [ { '$ref' => '#/definitions/Schema' }, { '$ref' => '#/definitions/Reference' } ] } }, 'additionalProperties' => { 'oneOf' => [ { '$ref' => '#/definitions/Schema' }, { '$ref' => '#/definitions/Reference' }, { 'type' => 'boolean' } ], 'default' => true }, 'description' => { 'type' => 'string' }, 'format' => { 'type' => 'string' }, 'default' => { }, 'nullable' => { 'type' => 'boolean', 'default' => false }, 'discriminator' => { '$ref' => '#/definitions/Discriminator' }, 'readOnly' => { 'type' => 'boolean', 'default' => false }, 'writeOnly' => { 'type' => 'boolean', 'default' => false }, 'example' => { }, 'externalDocs' => { '$ref' => '#/definitions/ExternalDocumentation' }, 'deprecated' => { 'type' => 'boolean', 'default' => false }, 'xml' => { '$ref' => '#/definitions/XML' } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'Discriminator' => { 'type' => 'object', 'required' => [ 'propertyName' ], 'properties' => { 'propertyName' => { 'type' => 'string' }, 'mapping' => { 'type' => 'object', 'additionalProperties' => { 'type' => 'string' } } } }, 'XML' => { 'type' => 'object', 'properties' => { 'name' => { 'type' => 'string' }, 'namespace' => { 'type' => 'string', 'format' => 'uri' }, 'prefix' => { 'type' => 'string' }, 'attribute' => { 'type' => 'boolean', 'default' => false }, 'wrapped' => { 'type' => 'boolean', 'default' => false } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'Response' => { 'type' => 'object', 'required' => [ 'description' ], 'properties' => { 'description' => { 'type' => 'string' }, 'headers' => { 'type' => 'object', 'additionalProperties' => { 'oneOf' => [ { '$ref' => '#/definitions/Header' }, { '$ref' => '#/definitions/Reference' } ] } }, 'content' => { 'type' => 'object', 'additionalProperties' => { '$ref' => '#/definitions/MediaType' } }, 'links' => { 'type' => 'object', 'additionalProperties' => { 'oneOf' => [ { '$ref' => '#/definitions/Link' }, { '$ref' => '#/definitions/Reference' } ] } } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'MediaType' => { 'type' => 'object', 'properties' => { 'schema' => { 'oneOf' => [ { '$ref' => '#/definitions/Schema' }, { '$ref' => '#/definitions/Reference' } ] }, 'example' => { }, 'examples' => { 'type' => 'object', 'additionalProperties' => { 'oneOf' => [ { '$ref' => '#/definitions/Example' }, { '$ref' => '#/definitions/Reference' } ] } }, 'encoding' => { 'type' => 'object', 'additionalProperties' => { '$ref' => '#/definitions/Encoding' } } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false, 'allOf' => [ { '$ref' => '#/definitions/ExampleXORExamples' } ] }, 'Example' => { 'type' => 'object', 'properties' => { 'summary' => { 'type' => 'string' }, 'description' => { 'type' => 'string' }, 'value' => { }, 'externalValue' => { 'type' => 'string', 'format' => 'uri-reference' } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'Header' => { 'type' => 'object', 'properties' => { 'description' => { 'type' => 'string' }, 'required' => { 'type' => 'boolean', 'default' => false }, 'deprecated' => { 'type' => 'boolean', 'default' => false }, 'allowEmptyValue' => { 'type' => 'boolean', 'default' => false }, 'style' => { 'type' => 'string', 'enum' => [ 'simple' ], 'default' => 'simple' }, 'explode' => { 'type' => 'boolean' }, 'allowReserved' => { 'type' => 'boolean', 'default' => false }, 'schema' => { 'oneOf' => [ { '$ref' => '#/definitions/Schema' }, { '$ref' => '#/definitions/Reference' } ] }, 'content' => { 'type' => 'object', 'additionalProperties' => { '$ref' => '#/definitions/MediaType' }, 'minProperties' => 1, 'maxProperties' => 1 }, 'example' => { }, 'examples' => { 'type' => 'object', 'additionalProperties' => { 'oneOf' => [ { '$ref' => '#/definitions/Example' }, { '$ref' => '#/definitions/Reference' } ] } } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false, 'allOf' => [ { '$ref' => '#/definitions/ExampleXORExamples' }, { '$ref' => '#/definitions/SchemaXORContent' } ] }, 'Paths' => { 'type' => 'object', 'patternProperties' => { '^\/' => { '$ref' => '#/definitions/PathItem' }, '^x-' => { } }, 'additionalProperties' => false }, 'PathItem' => { 'type' => 'object', 'properties' => { '$ref' => { 'type' => 'string' }, 'summary' => { 'type' => 'string' }, 'description' => { 'type' => 'string' }, 'servers' => { 'type' => 'array', 'items' => { '$ref' => '#/definitions/Server' } }, 'parameters' => { 'type' => 'array', 'items' => { 'oneOf' => [ { '$ref' => '#/definitions/Parameter' }, { '$ref' => '#/definitions/Reference' } ] }, 'uniqueItems' => true } }, 'patternProperties' => { '^(get|put|post|delete|options|head|patch|trace)$' => { '$ref' => '#/definitions/Operation' }, '^x-' => { } }, 'additionalProperties' => false }, 'Operation' => { 'type' => 'object', 'required' => [ 'responses' ], 'properties' => { 'tags' => { 'type' => 'array', 'items' => { 'type' => 'string' } }, 'summary' => { 'type' => 'string' }, 'description' => { 'type' => 'string' }, 'externalDocs' => { '$ref' => '#/definitions/ExternalDocumentation' }, 'operationId' => { 'type' => 'string' }, 'parameters' => { 'type' => 'array', 'items' => { 'oneOf' => [ { '$ref' => '#/definitions/Parameter' }, { '$ref' => '#/definitions/Reference' } ] }, 'uniqueItems' => true }, 'requestBody' => { 'oneOf' => [ { '$ref' => '#/definitions/RequestBody' }, { '$ref' => '#/definitions/Reference' } ] }, 'responses' => { '$ref' => '#/definitions/Responses' }, 'callbacks' => { 'type' => 'object', 'additionalProperties' => { 'oneOf' => [ { '$ref' => '#/definitions/Callback' }, { '$ref' => '#/definitions/Reference' } ] } }, 'deprecated' => { 'type' => 'boolean', 'default' => false }, 'security' => { 'type' => 'array', 'items' => { '$ref' => '#/definitions/SecurityRequirement' } }, 'servers' => { 'type' => 'array', 'items' => { '$ref' => '#/definitions/Server' } } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'Responses' => { 'type' => 'object', 'properties' => { 'default' => { 'oneOf' => [ { '$ref' => '#/definitions/Response' }, { '$ref' => '#/definitions/Reference' } ] } }, 'patternProperties' => { '^[1-5](?:\d{2}|XX)$' => { 'oneOf' => [ { '$ref' => '#/definitions/Response' }, { '$ref' => '#/definitions/Reference' } ] }, '^x-' => { } }, 'minProperties' => 1, 'additionalProperties' => false }, 'SecurityRequirement' => { 'type' => 'object', 'additionalProperties' => { 'type' => 'array', 'items' => { 'type' => 'string' } } }, 'Tag' => { 'type' => 'object', 'required' => [ 'name' ], 'properties' => { 'name' => { 'type' => 'string' }, 'description' => { 'type' => 'string' }, 'externalDocs' => { '$ref' => '#/definitions/ExternalDocumentation' } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'ExternalDocumentation' => { 'type' => 'object', 'required' => [ 'url' ], 'properties' => { 'description' => { 'type' => 'string' }, 'url' => { 'type' => 'string', 'format' => 'uri-reference' } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'ExampleXORExamples' => { 'description' => 'Example and examples are mutually exclusive', 'not' => { 'required' => [ 'example', 'examples' ] } }, 'SchemaXORContent' => { 'description' => 'Schema and content are mutually exclusive, at least one is required', 'not' => { 'required' => [ 'schema', 'content' ] }, 'oneOf' => [ { 'required' => [ 'schema' ] }, { 'required' => [ 'content' ], 'description' => 'Some properties are not allowed if content is present', 'allOf' => [ { 'not' => { 'required' => [ 'style' ] } }, { 'not' => { 'required' => [ 'explode' ] } }, { 'not' => { 'required' => [ 'allowReserved' ] } }, { 'not' => { 'required' => [ 'example' ] } }, { 'not' => { 'required' => [ 'examples' ] } } ] } ] }, 'Parameter' => { 'type' => 'object', 'properties' => { 'name' => { 'type' => 'string' }, 'in' => { 'type' => 'string' }, 'description' => { 'type' => 'string' }, 'required' => { 'type' => 'boolean', 'default' => false }, 'deprecated' => { 'type' => 'boolean', 'default' => false }, 'allowEmptyValue' => { 'type' => 'boolean', 'default' => false }, 'style' => { 'type' => 'string' }, 'explode' => { 'type' => 'boolean' }, 'allowReserved' => { 'type' => 'boolean', 'default' => false }, 'schema' => { 'oneOf' => [ { '$ref' => '#/definitions/Schema' }, { '$ref' => '#/definitions/Reference' } ] }, 'content' => { 'type' => 'object', 'additionalProperties' => { '$ref' => '#/definitions/MediaType' }, 'minProperties' => 1, 'maxProperties' => 1 }, 'example' => { }, 'examples' => { 'type' => 'object', 'additionalProperties' => { 'oneOf' => [ { '$ref' => '#/definitions/Example' }, { '$ref' => '#/definitions/Reference' } ] } } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false, 'required' => [ 'name', 'in' ], 'allOf' => [ { '$ref' => '#/definitions/ExampleXORExamples' }, { '$ref' => '#/definitions/SchemaXORContent' }, { '$ref' => '#/definitions/ParameterLocation' } ] }, 'ParameterLocation' => { 'description' => 'Parameter location', 'oneOf' => [ { 'description' => 'Parameter in path', 'required' => [ 'required' ], 'properties' => { 'in' => { 'enum' => [ 'path' ] }, 'style' => { 'enum' => [ 'matrix', 'label', 'simple' ], 'default' => 'simple' }, 'required' => { 'enum' => [ true ] } } }, { 'description' => 'Parameter in query', 'properties' => { 'in' => { 'enum' => [ 'query' ] }, 'style' => { 'enum' => [ 'form', 'spaceDelimited', 'pipeDelimited', 'deepObject' ], 'default' => 'form' } } }, { 'description' => 'Parameter in header', 'properties' => { 'in' => { 'enum' => [ 'header' ] }, 'style' => { 'enum' => [ 'simple' ], 'default' => 'simple' } } }, { 'description' => 'Parameter in cookie', 'properties' => { 'in' => { 'enum' => [ 'cookie' ] }, 'style' => { 'enum' => [ 'form' ], 'default' => 'form' } } } ] }, 'RequestBody' => { 'type' => 'object', 'required' => [ 'content' ], 'properties' => { 'description' => { 'type' => 'string' }, 'content' => { 'type' => 'object', 'additionalProperties' => { '$ref' => '#/definitions/MediaType' } }, 'required' => { 'type' => 'boolean', 'default' => false } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'SecurityScheme' => { 'oneOf' => [ { '$ref' => '#/definitions/APIKeySecurityScheme' }, { '$ref' => '#/definitions/HTTPSecurityScheme' }, { '$ref' => '#/definitions/OAuth2SecurityScheme' }, { '$ref' => '#/definitions/OpenIdConnectSecurityScheme' } ] }, 'APIKeySecurityScheme' => { 'type' => 'object', 'required' => [ 'type', 'name', 'in' ], 'properties' => { 'type' => { 'type' => 'string', 'enum' => [ 'apiKey' ] }, 'name' => { 'type' => 'string' }, 'in' => { 'type' => 'string', 'enum' => [ 'header', 'query', 'cookie' ] }, 'description' => { 'type' => 'string' } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'HTTPSecurityScheme' => { 'type' => 'object', 'required' => [ 'scheme', 'type' ], 'properties' => { 'scheme' => { 'type' => 'string' }, 'bearerFormat' => { 'type' => 'string' }, 'description' => { 'type' => 'string' }, 'type' => { 'type' => 'string', 'enum' => [ 'http' ] } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false, 'oneOf' => [ { 'description' => 'Bearer', 'properties' => { 'scheme' => { 'type' => 'string', 'pattern' => '^[Bb][Ee][Aa][Rr][Ee][Rr]$' } } }, { 'description' => 'Non Bearer', 'not' => { 'required' => [ 'bearerFormat' ] }, 'properties' => { 'scheme' => { 'not' => { 'type' => 'string', 'pattern' => '^[Bb][Ee][Aa][Rr][Ee][Rr]$' } } } } ] }, 'OAuth2SecurityScheme' => { 'type' => 'object', 'required' => [ 'type', 'flows' ], 'properties' => { 'type' => { 'type' => 'string', 'enum' => [ 'oauth2' ] }, 'flows' => { '$ref' => '#/definitions/OAuthFlows' }, 'description' => { 'type' => 'string' } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'OpenIdConnectSecurityScheme' => { 'type' => 'object', 'required' => [ 'type', 'openIdConnectUrl' ], 'properties' => { 'type' => { 'type' => 'string', 'enum' => [ 'openIdConnect' ] }, 'openIdConnectUrl' => { 'type' => 'string', 'format' => 'uri-reference' }, 'description' => { 'type' => 'string' } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'OAuthFlows' => { 'type' => 'object', 'properties' => { 'implicit' => { '$ref' => '#/definitions/ImplicitOAuthFlow' }, 'password' => { '$ref' => '#/definitions/PasswordOAuthFlow' }, 'clientCredentials' => { '$ref' => '#/definitions/ClientCredentialsFlow' }, 'authorizationCode' => { '$ref' => '#/definitions/AuthorizationCodeOAuthFlow' } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'ImplicitOAuthFlow' => { 'type' => 'object', 'required' => [ 'authorizationUrl', 'scopes' ], 'properties' => { 'authorizationUrl' => { 'type' => 'string', 'format' => 'uri-reference' }, 'refreshUrl' => { 'type' => 'string', 'format' => 'uri-reference' }, 'scopes' => { 'type' => 'object', 'additionalProperties' => { 'type' => 'string' } } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'PasswordOAuthFlow' => { 'type' => 'object', 'required' => [ 'tokenUrl', 'scopes' ], 'properties' => { 'tokenUrl' => { 'type' => 'string', 'format' => 'uri-reference' }, 'refreshUrl' => { 'type' => 'string', 'format' => 'uri-reference' }, 'scopes' => { 'type' => 'object', 'additionalProperties' => { 'type' => 'string' } } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'ClientCredentialsFlow' => { 'type' => 'object', 'required' => [ 'tokenUrl', 'scopes' ], 'properties' => { 'tokenUrl' => { 'type' => 'string', 'format' => 'uri-reference' }, 'refreshUrl' => { 'type' => 'string', 'format' => 'uri-reference' }, 'scopes' => { 'type' => 'object', 'additionalProperties' => { 'type' => 'string' } } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'AuthorizationCodeOAuthFlow' => { 'type' => 'object', 'required' => [ 'authorizationUrl', 'tokenUrl', 'scopes' ], 'properties' => { 'authorizationUrl' => { 'type' => 'string', 'format' => 'uri-reference' }, 'tokenUrl' => { 'type' => 'string', 'format' => 'uri-reference' }, 'refreshUrl' => { 'type' => 'string', 'format' => 'uri-reference' }, 'scopes' => { 'type' => 'object', 'additionalProperties' => { 'type' => 'string' } } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false }, 'Link' => { 'type' => 'object', 'properties' => { 'operationId' => { 'type' => 'string' }, 'operationRef' => { 'type' => 'string' }, 'parameters' => { 'type' => 'object', 'additionalProperties' => { } }, 'requestBody' => { }, 'description' => { 'type' => 'string' }, 'server' => { '$ref' => '#/definitions/Server' } }, 'patternProperties' => { '^x-' => { } }, 'additionalProperties' => false, 'not' => { 'description' => 'Operation Id and Operation Ref are mutually exclusive', 'required' => [ 'operationId', 'operationRef' ] } }, 'Callback' => { 'type' => 'object', 'additionalProperties' => { '$ref' => '#/definitions/PathItem' }, 'patternProperties' => { '^x-' => { } } }, 'Encoding' => { 'type' => 'object', 'properties' => { 'contentType' => { 'type' => 'string' }, 'headers' => { 'type' => 'object', 'additionalProperties' => { 'oneOf' => [ { '$ref' => '#/definitions/Header' }, { '$ref' => '#/definitions/Reference' } ] } }, 'style' => { 'type' => 'string', 'enum' => [ 'form', 'spaceDelimited', 'pipeDelimited', 'deepObject' ] }, 'explode' => { 'type' => 'boolean' }, 'allowReserved' => { 'type' => 'boolean', 'default' => false } }, 'additionalProperties' => false } } } SCHEMAS = { Draft4::BASE_URI.dup.tap { |uri| uri.fragment = nil } => Draft4::SCHEMA } end end end