@har-sdk/openapi-sampler

Tool for generation samples based on OpenAPI payload/response schema

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
@har-sdk/openapi-sampler
522.0.122 months agoa year agoMinified + gzip package size for @har-sdk/openapi-sampler in KB

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](https://swagger.io/docs/specification/data-models/data-types/#required)
- 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' }