Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/redocly/openapi-sampler
:capital_abcd: Tool for generation samples based on OpenAPI(fka Swagger) payload/response schema
https://github.com/redocly/openapi-sampler
fake mock openapi openapi-sampler openapi3 openapi31 payload schema swagger
Last synced: 6 days ago
JSON representation
:capital_abcd: Tool for generation samples based on OpenAPI(fka Swagger) payload/response schema
- Host: GitHub
- URL: https://github.com/redocly/openapi-sampler
- Owner: Redocly
- License: mit
- Created: 2016-05-29T10:29:32.000Z (over 8 years ago)
- Default Branch: main
- Last Pushed: 2024-09-12T11:45:25.000Z (3 months ago)
- Last Synced: 2024-10-29T22:56:08.475Z (about 2 months ago)
- Topics: fake, mock, openapi, openapi-sampler, openapi3, openapi31, payload, schema, swagger
- Language: JavaScript
- Homepage:
- Size: 1.58 MB
- Stars: 183
- Watchers: 17
- Forks: 46
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- Contributing: .github/CONTRIBUTING.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# openapi-sampler
[![Travis build status](http://img.shields.io/travis/Redocly/openapi-sampler.svg?style=flat)](https://travis-ci.org/Redocly/openapi-sampler) [![Coverage Status](https://coveralls.io/repos/Redocly/openapi-sampler/badge.svg?branch=master&service=github)](https://coveralls.io/github/Redocly/openapi-sampler?branch=master) [![Dependency Status](https://david-dm.org/Redocly/openapi-sampler.svg)](https://david-dm.org/Redocly/openapi-sampler) [![devDependency Status](https://david-dm.org/Redocly/openapi-sampler/dev-status.svg)](https://david-dm.org/Redocly/openapi-sampler#info=devDependencies)
Tool for generation samples based on OpenAPI payload/response schema
## Features
- Deterministic (given a particular input, will always produce the same output)
- Supports compound keywords: `allOf`, `oneOf`, `anyOf`, `if/then/else`
- Supports `additionalProperties` with [`x-additionalPropertiesName`](https://github.com/Redocly/redoc/blob/master/docs/redoc-vendor-extensions.md#x-additionalpropertiesname)
- Uses `const`, `examples`, `enum` and `default` where possible - in this order
- Good array support: supports `contains`, `minItems`, `maxItems`, and tuples (`items` as an array)
- Supports `minLength`, `maxLength`, `min`, `max`, `exclusiveMinimum`, `exclusiveMaximum`, ([limited](https://fakerjs.dev/api/helpers.html#fromregexp)) `pattern`
- Supports the following `string` formats:
- 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](https://www.npmjs.com/package/json-schema-faker#inferred-types)
- Support for `$ref` resolving
- Has basic supports for JSON Schema draft 7 (thanks to [@P0lip](https://github.com/P0lip) from [@stoplightio](https://github.com/stoplightio) for contributing)## Installation
Install using [npm](https://docs.npmjs.com/getting-started/what-is-npm)
npm install openapi-sampler
or using [yarn](https://yarnpkg.com)
yarn add openapi-sampler
Then require it in your code:
```js
var OpenAPISampler = require('openapi-sampler');
```## Usage
#### `OpenAPISampler.sample(schema, [options], [spec])`
- **schema** (_required_) - `object`
An [OpenAPI Schema Object](http://swagger.io/specification/#schemaObject) or 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](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
```js
const OpenAPISampler = require('.');
OpenAPISampler.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' }
```