openapi-typescript Documentation

Generate TypeScript types from OpenAPI 3 specs

8,112 stars TypeScript TypeScript 1 file Β· ~2,066 tokens #openapi#openapi3#openapi3-1#swagger#typescript
RAW Doc

File: README.md

openapi-typescript

Tools for consuming OpenAPI schemas in TypeScript.

πŸ“¦ Packages

Generate TypeScript types from static OpenAPI schemas Ultra-fast fetching for TypeScript generated automatically from your OpenAPI schema.

⭐ Sponsors

πŸ₯‡ Gold Sponsors

πŸ₯ˆ Silver Sponsors

Backers

Become a sponsor by supporting this project on OpenCollective!

🀝 Contributing

Contributions are appreciated and welcome! See the appropriate guide for each package:

β™₯️ Thanks


File: docs/index.md


https://vitepress.dev/reference/default-theme-home-page

layout: home

hero:
name: "OpenAPI TypeScript"
tagline: Convert OpenAPI 3.0/3.1Β schemas to TypeScript types and create type-safe fetching.
actions:
- theme: brand
text: Get Started
link: /introduction
- theme: alt
text: View on GitHub
link: https://github.com/openapi-ts/openapi-typescript

features:

  • title: Blazing Fast
    details: Nothing is faster than instant. Static TypeScript types provide zero runtime cost and zero client weight.
  • title: Type-safe
    details: Use your OpenAPI schema to typecheck your entire codebase with no setup and no tests.
  • title: Works anywhere
    details: Runs anywhere TypeScript does. Works for any stack and any framework.

Used by

  • Sponsors

    Become a sponsor by supporting this project on OpenCollective!


    File: docs/README.md

    openapi-typescript Docs

    Docs site powered by Vitepress, an ergonomic docs site template powered by Vite.

    Lives at https://openapi-ts.dev.

    Setup

    Setup requires the latest version of Node.js and pnpm. With both installed, run:

    text
    pnpm i
    pnpm run dev

    That will launch the docs site at http://localhost:5173.

    Editing

    All content lives in .md files that feature normal Markdown content with powerful Vitepress extensions.

    Contributing

    Docs contributions are welcome! Please refer to CONTRIBUTING.md for additional assistance.


    File: docs/introduction.md


    title: openapi-typescript

    openapi-typescript turns OpenAPI 3.0 & 3.1 schemas into TypeScript quickly using Node.js. No Java/node-gyp/running OpenAPI servers necessary.

    The code is MIT-licensed and free for use.

    ::: tip

    New to OpenAPI? Speakeasy’s Intro to OpenAPI is an accessible guide to newcomers that explains the β€œwhy” and β€œhow” of OpenAPI.

    :::

    Features

    • βœ… Supports OpenAPI 3.0 and 3.1 (including advanced features like discriminators)
    • βœ… Generate runtime-free types that outperform old school codegen
    • βœ… Load schemas from YAML or JSON, locally or remotely
    • βœ… Generate types for even huge schemas within milliseconds

    Note: OpenAPI 2.x is supported with versions 5.x and previous

    Examples

    πŸ‘€ See examples

    Setup

    This library requires the latest version of Node.js installed (20.x or higher recommended). With that present, run the following in your project:

    bash
    npm i -D openapi-typescript typescript

    And in your tsconfig.json, to load the types properly:

    ::: code-group

    json [tsconfig.json]
    {
      "compilerOptions": {
        "module": "ESNext", // or "NodeNext" // [!code ++]
        "moduleResolution": "Bundler" // or "NodeNext" // [!code ++]
      }
    }

    :::

    ::: tip Highly recommended

    Also adding the following can boost type safety:

    ::: code-group

    json [tsconfig.json]
    {
      "compilerOptions": {
        "noUncheckedIndexedAccess": true // [!code ++]
      }
    }

    :::

    Basic usage

    First, generate a local type file by running npx openapi-typescript, first specifying your input schema (JSON or YAML), and where you’d like the --output (-o) to be saved:

    bash
    # Local schema
    npx openapi-typescript ./path/to/my/schema.yaml -o ./path/to/my/schema.d.ts
    # πŸš€ ./path/to/my/schema.yaml -> ./path/to/my/schema.d.ts [7ms]
    
    # Remote schema
    npx openapi-typescript https://myapi.dev/api/v1/openapi.yaml -o ./path/to/my/schema.d.ts
    # πŸš€ https://myapi.dev/api/v1/openapi.yaml -> ./path/to/my/schema.d.ts [250ms]

    Then in your TypeScript project, import types where needed:

    ::: code-group

    ts [src/my-project.ts]
    import type { paths, components } from "./my-openapi-3-schema"; // generated by openapi-typescript
    
    // Schema Obj
    type MyType = components["schemas"]["MyType"];
    
    // Path params
    type EndpointParams = paths["/my/endpoint"]["parameters"];
    
    // Response obj
    type SuccessResponse =
      paths["/my/endpoint"]["get"]["responses"][200]["content"]["application/json"]["schema"];
    type ErrorResponse =
      paths["/my/endpoint"]["get"]["responses"][500]["content"]["application/json"]["schema"];

    :::

    From here, you can use these types for any of the following (but not limited to):

    • Using an OpenAPI-supported fetch client (like openapi-fetch)
    • Asserting types for other API requestBodies and responses
    • Building core business logic based on API types
    • Validating mock test data is up-to-date with the current schema
    • Packaging API types into any npm packages you publish (such as client SDKs, etc.)