Code generation tool that generates client libraries for accessing RESTful web services from OpenAPI specifications
npx @tessl/cli install tessl/npm-autorest@3.7.0AutoRest is a code generation tool that generates client libraries for accessing RESTful web services from OpenAPI specifications. It provides both a command-line interface for generating code and a programmatic API for integrating AutoRest functionality into custom tools and workflows.
npm install -g autorest (global CLI) or npm install autorest (programmatic use)For programmatic use:
import {
create,
initialize,
getApplicationEntrypoint,
AutoRest,
Channel,
DocumentType,
isOpenApiDocument,
identifyDocument,
toJSON,
color,
Message,
Artifact,
GenerationResults,
IFileSystem
} from "autorest";For CommonJS:
const {
create,
initialize,
getApplicationEntrypoint,
AutoRest,
Channel,
DocumentType,
isOpenApiDocument,
identifyDocument,
toJSON,
color
} = require("autorest");# Generate client library from OpenAPI spec
autorest --input-file=petstore.yaml --output-folder=./generated --csharp
# Show help
autorest --help
# List installed extensions
autorest --info
# Reset AutoRest installation
autorest --resetimport { create, Channel } from "autorest";
import { IAutorestLogger } from "@autorest/common";
// Create AutoRest instance
const logger: IAutorestLogger = /* your logger implementation */;
const autorest = await create(logger);
// Configure and run generation
await autorest.AddConfiguration({
"input-file": "petstore.yaml",
"output-folder": "./generated",
"csharp": true
});
const result = await autorest.Process();AutoRest is built around several key components:
Command-line interface providing direct access to AutoRest functionality, including code generation, extension management, and configuration.
interface AutorestArgs {
version?: string;
latest?: boolean;
preview?: boolean;
reset?: boolean;
debug?: boolean;
info?: boolean;
verbose?: boolean;
"message-format"?: "regular" | "json";
"list-available"?: boolean;
"list-installed"?: boolean;
"clear-temp"?: boolean;
"skip-upgrade-check"?: boolean;
}
function parseAutorestArgs(argv: string[]): AutorestArgs;Core programmatic interface for creating AutoRest instances, processing specifications, and integrating with custom workflows.
function create(
logger: IAutorestLogger,
fileSystem?: IFileSystem,
configFileOrFolderUri?: string
): Promise<AutoRest>;
function initialize(
logger: IAutorestLogger,
requestedVersion?: string,
minimumVersion?: string
): Promise<void>;
function isOpenApiDocument(logger: IAutorestLogger, content: string): Promise<boolean>;
function identifyDocument(logger: IAutorestLogger, content: string): Promise<DocumentType>;
function toJSON(logger: IAutorestLogger, content: string): Promise<string>;Version management and bootstrapping functionality for managing AutoRest core installations and extensions.
function getApplicationEntrypoint(
logger: IAutorestLogger,
requestedVersion?: string,
minimumVersion?: string
): Promise<string | undefined>;
function initialize(
logger: IAutorestLogger,
requestedVersion?: string,
minimumVersion?: string
): Promise<void>;
const AutoRest: Promise<IAutoRest>;Configuration and settings management for AutoRest operations, primarily through the programmatic API.
interface AutoRest {
AddConfiguration(config: any): Promise<void>;
Process(): Promise<GenerationResults>;
}enum Channel {
Information = "information",
Warning = "warning",
Error = "error",
Debug = "debug",
Verbose = "verbose",
Fatal = "fatal",
Hint = "hint",
File = "file",
Configuration = "configuration",
Protect = "protect"
}
enum DocumentType {
OpenAPI2 = "OpenAPI2",
OpenAPI3 = "OpenAPI3",
LiterateConfiguration = "LiterateConfiguration",
Unknown = "Unknown"
}interface AutoRest {
AddConfiguration(config: any): Promise<void>;
Process(): Promise<GenerationResults>;
// Additional methods from dynamically loaded core
}
interface GenerationResults {
// Result structure from core processing
}
interface IFileSystem {
// File system abstraction interface
}
interface Extension {
name: string;
version: string;
location: string;
}// Re-exported from autorest-core for convenience
interface Message {
// Structure defined by @autorest/core
}
interface Artifact {
// Structure defined by @autorest/core
}
interface GenerationResults {
// Result structure from core processing
}
interface IFileSystem {
// File system abstraction interface
}
// Utility function from @autorest/common
function color(text: string): string;