Skip to content

stoplightio/json-schema-sampler

Folders and files

NameName
Last commit message
Last commit date

Latest commit

750b1bc · Jul 17, 2023
Apr 14, 2021
Jul 17, 2023
Oct 13, 2021
Jun 19, 2019
May 29, 2016
May 29, 2016
Apr 14, 2021
May 29, 2016
May 14, 2020
Jul 17, 2023
Apr 14, 2021
Sep 21, 2021
Jun 19, 2019
Apr 14, 2021
Jun 19, 2019
Jul 17, 2023
Apr 21, 2021

Repository files navigation

@stoplight/json-schema-sampler

It's a fork of openapi-sampler by Redocly, with focus on supporting JSON Schema Draft 7.

Tool for generation samples based on JSON Schema Draft 7.

Features

  • Deterministic (given a particular input, will always produce the same output)
  • Supports compound keywords: allOf, oneOf, anyOf, if/then/else
  • Supports additionalProperties
  • Uses default, const, enum and examples where possible
  • Good array support: supports contains, minItems, maxItems, and tuples (items as an array)
  • Supports minLength, maxLength, min, max, exclusiveMinimum, exclusiveMaximum
  • Supports the following string formats:
    • email
    • idn-email
    • password
    • date-time
    • date
    • time
    • ipv4
    • ipv6
    • hostname
    • idn-hostname
    • uri
    • uri-reference
    • uri-template
    • iri
    • iri-reference
    • uuid
    • json-pointer
    • relative-json-pointer
    • regex
  • Infers schema type automatically following same rules as json-schema-faker
  • Support for $ref resolving

Installation

Install using npm

npm install @stoplight/json-schema-sampler --save

or using yarn

yarn add @stoplight/json-schema-sampler

Then require it in your code:

const JSONSchemaSampler = require('@stoplight/json-schema-sampler');

Usage

JSONSchemaSampler.sample(schema, [options], [spec])

  • schema (required) - object A JSON Schema Draft 7 document.
  • options (optional) - object Available options:
    • skipNonRequired - boolean Don't include non-required object properties not specified in required property of the schema object
    • skipReadOnly - boolean Don't include readOnly object properties
    • skipWriteOnly - boolean Don't include writeOnly object properties
    • quiet - boolean Don't log console warning messages
    • maxSampleDepth - number Max depth sampler should traverse
  • doc - the whole schema where the schema is taken from. Might be useful when the schema passed is only a portion of the whole schema and $refs aren't resected. doc must not contain any external references

Example

const JSONSchemaSampler = require('@stoplight/json-schema-sampler');
JSONSchemaSampler.sample({
  type: 'object',
  properties: {
    a: {type: 'integer', minimum: 10},
    b: {type: 'string', format: 'password', minLength: 10},
    c: {type: 'boolean', readOnly: true}
  }
}, {skipReadOnly: true});
// { a: 10, b: 'pa$$word_q' }