Use this library to read and write *.api.json files as defined by the API Extractor tool. These files are used to generate a documentation website for your TypeScript package. The files store the API signatures and doc comments that were extracted from your package.
API documentation for this package: https://rushstack.io/pages/api/api-extractor-model/
The following code sample shows how to load
example.api.json, which would be generated by API Extractor
when it analyzes a hypothetical NPM package called
;;;for of apiPackage.members
ApiModel is acts as a container for various packages that are loaded and operated on as a group.
For example, a documentation tool may need to resolve
@link references across different packages.
In this case we would load the various packages into the
ApiModel, and then use
ApiModel.resolveDeclarationReference() to resolve the
The data structure forms a tree of various classes that start with the
Api prefix. The nesting hierarchy
might look like this:
- ApiModel - ApiPackage - ApiEntryPoint - ApiClass - ApiMethod - ApiProperty - ApiEnum - ApiEnumMember - ApiInterface - ApiMethodSignature - ApiPropertySignature - ApiNamespace - (ApiClass, ApiEnum, ApiInterace, ...)
You can use the
ApiItem.members property to traverse this tree.
Note that the non-abstract classes (e.g.
ApiInterface, etc.) use
TypeScript "mixin" functions (e.g.
ApiItemContainerMixin, etc.) to add various
features that cannot be represented as a normal inheritance chain (since TypeScript does not allow a child class
to extend more than one base class). The "mixin" is a TypeScript merged declaration with three components:
the function that generates a subclass, an interface that describes the members of the subclass, and
a namespace containing static members of the class.
For a complete project that uses these APIs to generate an API reference web site, see the @microsoft/api-documenter source code.