@har-sdk/openapi-sampler

Tool for generation samples based on OpenAPI payload/response schema

Usage no npm install needed!

<script type="module">
  import harSdkOpenapiSampler from 'https://cdn.skypack.dev/@har-sdk/openapi-sampler';
</script>

README

@har-sdk/openapi-sampler

Tool for generation samples based on OpenAPI payload/response schema

Features

  • deterministic (given a particular input, will always produce the same output)
  • Supports allOf
  • Supports additionalProperties
  • Uses default, const, enum and examples where possible
  • Full array support: supports minItems, and tuples (items as an array)
  • Supports minLength, maxLength, min, max, exclusiveMinimum, exclusiveMaximum
  • Supports the next string formats:
    • email
    • password
    • date-time
    • date
    • ipv4
    • ipv6
    • hostname
    • uri
  • Infers schema type automatically following same rules as json-schema-faker
  • Support for $ref resolving

Installation

Install using npm

npm i --save @har-sdk/openapi-sampler

or using yarn

yarn add @har-sdk/openapi-sampler

Then require it in your code:

import { sample } from '@har-sdk/openapi-sampler';

Usage

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

  • schema (required) - object A OpenAPI Schema Object
  • 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
  • spec - whole specification where the schema is taken from. Required only when schema may contain $ref. spec must not contain any external references

Example

import { sample } from '@har-sdk/openapi-sampler';

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' }