Parser adapter for parsing JSON documents into OpenAPI 3.1.x namespace.
npm install @speclynx/apidom-parser-adapter-openapi-json-3-1@speclynx/apidom-parser-adapter-openapi-json-3-1 is a parser adapter for the OpenAPI 3.1.x specification in JSON format supporting the following versions:
- OpenAPI 3.1.0
- OpenAPI 3.1.1
- OpenAPI 3.1.2
Under the hood this adapter uses apidom-parser-adapter-json
to parse a source string into generic ApiDOM in base ApiDOM namespace
which is then refracted with OpenAPI 3.1.x Refractors.
You can install @speclynx/apidom-parser-adapter-openapi-json-3-1 via npm CLI by running the following command:
``sh`
$ npm install @speclynx/apidom-parser-adapter-openapi-json-3-1
This parser adapter is fully compatible with parser adapter interface required by @speclynx/apidom-parser
and implements all required properties.
Defines list of media types that this parser adapter recognizes.
`js`
[
'application/vnd.oai.openapi;version=3.1.0',
'application/vnd.oai.openapi+json;version=3.1.0',
'application/vnd.oai.openapi;version=3.1.1',
'application/vnd.oai.openapi+json;version=3.1.1',
'application/vnd.oai.openapi;version=3.1.2',
'application/vnd.oai.openapi+json;version=3.1.2',
]
Detection is based on a regular expression matching required OpenAPI 3.1.x specification symbols in JSON format.
This adapter exposes an instance of OpenAPI 3.1.x ApiDOM namespace.
parse function consumes various options as a second argument. Here is a list of these options:
Option | Type | Default | Description
--- | --- | --- | ---
specObj | Object | Specification Object | This specification object drives the JSON AST transformation to OpenAPI 3.1.x ApiDOM namespace.sourceMap | Boolean | false | Indicate whether to generate source maps.refractorOpts | Object | {} | Refractor options are passed to refractors during refracting phase.
All unrecognized arbitrary options will be ignored.
This parser adapter can be used directly or indirectly via @speclynx/apidom-parser.
During direct usage you don't need to provide mediaType as the parse function is already pre-bound
with supported media types.
`js
import { parse, detect } from '@speclynx/apidom-parser-adapter-openapi-json-3-1';
// detecting
await detect('{"openapi": "3.1.2"}'); // => true
await detect('test'); // => false
// parsing
const parseResult = await parse('{"openapi": "3.1.2"}', { sourceMap: true });
`
You can omit the mediaType option here, but please read Word on detect vs mediaTypes before you do so.
`js
import ApiDOMParser from '@speclynx/apidom-parser';
import * as openApiJsonAdapter from '@speclynx/apidom-parser-adapter-openapi-json-3-1';
const parser = new ApiDOMParser();
parser.use(openApiJsonAdapter);
const parseResult = await parser.parse('{"openapi": "3.1.2"}', { mediaType: openApiJsonAdapter.mediaTypes.latest('json') });
``