Skip to content

aspida/openapi2aspida

Repository files navigation

OpenAPI / Swagger to aspida



aspida logo image



Convert OpenAPI 3.0 and Swagger 2.0 definitions into aspida.



Getting Started

Compatible with yaml/json of OpenAPI3.0/Swagger2.0

$ mkdir petstore-api
$ cd petstore-api
$ npx openapi2aspida -i https://petstore.swagger.io/v2/swagger.json # or ../local-swagger.yaml
# api/$api.ts was built successfully.

$ npm init -y
$ npm install @aspida/axios axios typescript ts-node @types/node

index.ts

import axiosClient from '@aspida/axios';
import api from './api/$api';
import type { Pet } from './api/@types';
(async () => {
  const client = api(axiosClient());
  const petId = 100;
  const body: Pet = {
    id: petId,
    name: 'hoge',
    photoUrls: [],
    status: 'available',
  };

  await client.pet.$post({ body });
  const pet = await client.pet._petId(petId).$get();
  console.log(pet);
})();

package.json

{
  "scripts": {
    "start": "ts-node index.ts"
  }
}
$ npm start
# { id: 100, name: 'hoge', photoUrls: [], tags: [], status: 'available' }

Build from config file

Create config file in project root

aspida.config.js

module.exports = {
  input: 'api', // "input" of aspida is "output" for openapi2aspida
  outputEachDir: true, // Generate $api.ts in each endpoint directory
  openapi: { inputFile: 'https://petstore.swagger.io/v2/swagger.json' },
};
$ npx openapi2aspida

Cli options

-i, --input

path to an OpenAPI spec file for input

-o, --outputdir

can change aspida output directory

-c, --config

path to an aspida config file

--version

displays version of openapi2aspida

example

npx openapi2aspida -i=openApi/sample.yaml -o=lib/api/sample

License

openapi2aspida is licensed under a MIT License.