Importers

The formats Spirefy imports into the unified model, and how an import lands as one atomic, sourced change.

Browse documentation

An importer reads bytes in some format and turns them into the unified model. Importers are first-party: the app ships with a set, and we publish more to the marketplace. Importing is one of the few things that writes the model, so importers are part of the app rather than something third parties add.

The formats today

Fifteen importers exist: OpenAPI 3.x, OpenAPI 2.0 (Swagger), AsyncAPI 3.x, Arazzo, Postman, Insomnia, Bruno, HAR, cURL, HTTP files, Hoppscotch, Thunder Client, RAML, API Blueprint, and OpenAPI Overlay. OpenAPI, AsyncAPI, and Arazzo ship with the app; the rest are marketplace plugins you add. Most are written in Rust.

Format detection

When you import a file, Spirefy decides which importer handles it without making you choose. It works in passes: the file extension first, then a keyword in the content, then a recognizable top-level key, then asking each importer whether it can handle the bytes.

One atomic change

An importer does not write the model directly. It hands the import flow a spirefy.cmd.v1 command batch, and the app applies it atomically and records the format as the source of everything it created. A failed import leaves no half-written model, and every entity carries the source it came from, so you can always see where it originated.

Run it headlessly

The same import runs in the app and from the command line. spirefy import drives the import orchestrator without opening the UI, which is how an import fits into a script.