If you are currently using version 2, check out migration guideline to version 3. You might be able to update it without any change.
AsyncAPI
This is a mono repository, which provides all the JSON Schema documents for validating AsyncAPI documents.
Installation
NodeJS
npm install @asyncapi/specs
Go
go get github.com/asyncapi/spec-json-schemas/v2
Usage
NodeJS
Grab a specific AsyncAPI version:
const asyncapi = require('@asyncapi/specs/schemas/2.0.0');
Get a list of versions:
const versions = require('@asyncapi/specs');
console.log(versions);
const asyncapi = versions['1.1.0'];
Go
Grab a specific AsyncAPI version:
import "github.com/asyncapi/spec_json_schemas/v2"
func Do() {
schema, err := spec_json_schemas.Get("1.1.0")
if err != nil {
panic(err)
}
}
Repository structure
This is the current project structure explained.
- ./definitions - contain all the individual schemas that will automatically be bundled together to provide the schemas in ./schemas.
- ./tools/bundler - is the tool that bundles all the individual schemas together.
- ./schemas - contain all automatically bundled and complete schemas for each AsyncAPI version. These schemas should NOT be manually changed as they are automatically generated. Any changes should be done in ./definitions.
Schema Bundling
Changes should not be done manually to the schemas in ./schemas, but instead be done in their individual definitions located in ./definitions.
These definitions are automatically bundled together on new releases through the npm script prepublishOnly
, which ensures the project is build. This is where the bundler is called.
For example, for 2.2.0, the bundler starts with the asyncapi.json file and recursively goes through all references ($ref
) to create the appropriate bundled version.
Creating a new version
To create a new version, simply run the following command:
npm run startNewVersion --new-version=x.x.x
Where x.x.x
is the new version you want to create.
The manual process of creating a new version is to:
- Duplicate the latest version (
y.y.y
) under definitions (so we have the correct base to make changes from). - Rename the folder to the new version (
x.x.x
). - Search and replace in the new duplicated folder for
y.y.y
and replace it with x.x.x
.