The following sample input can be used to generate an OpenAPI document.
api:
title: Invoicing API
description: Invoicing API Reference
version: '1.0'
prefix: /api/v1
scripts:
outputDir: ./output/invoicing
framework: express #express|webapi|fastapi
interfaces:
company:
id:
name:
address:
crn:
trn:
contact:
mobile:
email: str|email
category:
id: string
name: string
items?: item[]
item:
id: string
name: string
category_id?: str > category.id
category?: =category
Some special syntax is used:
Example 1: email: str|email
means the property email
has a data type string
and the format is email
.
Example 2: category_id?: str > category.id
means the category_id
is optional property (due to ending with ?
), the data type is string
and it is a reference >
to another entity of type category
and that its value is its id
property. (think of it like a foreign key reference in a database table to another table).
Example 3: items?: item[]
: the ?
means it is not required, item
means it is a reference to another known entity of type item
and []
means it is an array of items.
You can start by saving input in a yaml file, and running the commands to test it. A full input example is located in schemas/invoicing.yml
Run this command to test it (generate just OpenAPI document):
python gen.py docs ./schemas/invoicing.yml
You can view a sample output in ./output/invoicing.yml
.
The output will be stored in ./output/invoicing.yml
. You can copy the output and paste it in Swagger Editor to test it and validate.
Example to generate expressJs api typescript code, (code will be generated for the specified framework in scripts.framework
), run:
python gen.py api ./schemas/invoicing.yml
The output will be written in the specified scripts.outputDir
in the supplied .yml
file.
The generated api will have the basic business, interfaces, classes, and routes. Backend can be JSON or Sqlite3 (default) for now.
Upcoming is to generate sql for :sqlite, postgres, sql server, etc.