Logo

dev-resources.site

for different kinds of informations.

Open API specs with more than one YAML file

Published at
9/25/2024
Categories
openapi
documentation
go
tooling
Author
mourishitz
Categories
4 categories in total
openapi
open
documentation
open
go
open
tooling
open
Author
10 person written this
mourishitz
open
Open API specs with more than one YAML file

Everyone that has ever documented a REST API knows what it feels like to write an entire YAML file complete with all those resources, paths, requests and schemas, but suddenly you find yourself keeping a file in which the last line has 5 digits length. Yes, it is painful.

Since the best applications are those we built to ourselves, I found myself on this exact same spot documenting an API at work and I searched a lot to not find one single viable solution to this problem, that's when our programmer instincts come in and we spend five times the time we were supposed to building a new tool for ourselves. That's exactly what I did and I want to share with you all a brand new tool written in Go to merge your YAML files on a single boss file to be used as your OpenAPI spec.

Introducing: GOpenAPI

GOpenAPI (Golang OpenAPI) is a tool that uses a file called dirs.json to scan files and directories (yes, whole directories worth of yaml) into one single swagger.yaml file at the end of execution.

You can check the source code here. Note that the repository is also a template that can be cloned and used as a draft to create your first OpenAPI spec with this tool (just make sure to keep gopenapi folder if you are not willing to install it via go install, otherwise it is completely removable)

How does it works (and do I get it working)

Simple, once you run gopenapi it reads the dirs.json file and starts to build an OpenAPI spec with all the files and folders declared in there. Note that the dirs.json will use files for unique keys such as info, servers and security as well as a key called template (which is just a blank OpenAPI yaml file)

Resources and keys that are hard to keep in a single file (such as paths, schemas and requests) can be stored in folders, and those can also be mentioned using the common #ref tag on OpenAPI, since all of them are going to the same file after merged.

This project also comes with an index.html that can be served statically and it also interacts with the Swagger UI official bundle that is contained inside the dist folder.

That's all folks

I hope this tool comes along for anybody who (just like me) searched a whole lot of reddits and github repositories just not to find the tool they were looking for. Well, now you have it and it is completely open source which means that, if you see any improvement or issue that can be resolved I won't think twice before collaborating with you to solve it. Also, I am pretty much naive on golang so it might have a lot to improve on this project, I will try to keep it up to date and constantly improve it (since I will also use it a lot now)

Thank you for reading and I hope this one comes handy to you the same way it did to me ;)

openapi Article's
30 articles in total
Favicon
How to Optimize Large JSON Files for Use with ChatGPT API?
Favicon
SpringBoot Web Service - Part 5 - Github Action
Favicon
SpringBoot Web Service - Part 2 - Preparing Using Spring Initializr
Favicon
SpringBoot Web Service - Part 1 - Create Repository
Favicon
SpringBoot Web Service - Part 4 - Initial Configuration
Favicon
Swagger
Favicon
How I write Go APIs in 2025 - my experience with Fuego
Favicon
Building and Deploying a New API (Part 1)
Favicon
.NET 9 Revolutionizing documentation of APIs : From Swashbuckle to Scalar 🚀
Favicon
Parameter Position in OpenAPI
Favicon
Why Clear and Meaningful Status Codes Matter in Your REST API
Favicon
.NET 9 Improvements for ASP.NET Core: Open API, Performance, and Tooling
Favicon
Integrating OpenAPI Documentation and Swagger UI in Spring Boot
Favicon
How Scale Changes Everything - The LiveAPI Perspective
Favicon
A Closer Look At API Docs Generated via LiveAPI's AI
Favicon
Musings Over What Makes LiveAPI Different (from Swagger Et Cetera)
Favicon
An Online Free API AutoTesting Tool That Completes 160 Hours of Testing Work for 20 APIs in Just 3 Minutes
Favicon
How to Improve Development Efficiency Through Automated API Testing
Favicon
New to dev.to and Excited to Share ProxyConf: My Elixir-Powered API Control Plane
Favicon
Exploring AutoAPI: An Automation Tool to Simplify Frontend Development
Favicon
OpenAPI and Frontend
Favicon
How to Generate and Display Swagger (OpenAPI) Documentation for Your Laravel API
Favicon
Why we chose the Go Huma framework to develop our API endpoints
Favicon
New Swagger-UI embedding Cloud TypeScript Editor with RPC SDK
Favicon
Laravel API Documentation Made Easy: Step-by-Step Swagger Integration
Favicon
Open API specs with more than one YAML file
Favicon
Introducing Swama: A CLI Tool for Swagger/OpenAPI Interactions
Favicon
Swagger UI + Docker: Initial Setup
Favicon
Merge and bundle open api yaml files for swagger
Favicon
Tutorial: Build a Java SDK based on OpenAPI Spec

Featured ones: