All sections

Core features

Import and export

On this page

Tetiva reads and writes one interchange format: Postman Collection v2.1 and Postman Environment. A single request can also leave the app as a cURL command. Import builds the folder tree and requests directly in the current workspace; export hands you a file through the system save dialog. There is no reverse path for cURL — you can copy a command out, but you cannot paste one in.

Importing a collection#

The import button sits in the toolbar above the collection tree and drops the result at the root of the workspace. Import Postman Collection in a collection's context menu does the same thing but nests the result inside that collection. Pick a .json file, and a toast reports how many folders and requests were created.

Tetiva
v0.17.0
A collection context menu in Tetiva with Import Postman Collection and Export as PostmanA collection context menu in Tetiva with Import Postman Collection and Export as Postman
Importing from the context menu nests the parsed tree inside the selected collection

The schema is checked: the file has to be Collection v2.1. A v2.0 or v1 export is rejected with a message asking you to re-export from Postman as v2.1.

What comes across#

From PostmanIn Tetiva
Collection name, description, authTop-level collection with the same fields
Folders at any depthNested collections
Request name, method, URLAn HTTP request; an unknown method becomes GET
Headers, including disabled: trueHeaders with the checkbox cleared
raw with language jsonJSON body
raw with language xml or htmlXML body
raw with any other language, or noneRaw body
formdataForm rows: key, value, type (text/file), enabled flag
graphqlA GraphQL request with query, variables and method POST
Auth bearer, basic, apikey on collection, folder or requestThe matching auth type

Query parameters arrive inside the URL; the Params tab parses them out of the string, so the table fills itself.

What does not come across:

  • pre-request and test scripts — event blocks are ignored on import and never written on export;
  • collection variables — use an environment instead;
  • per-request descriptions, saved example responses, mocks and monitors;
  • urlencoded and file bodies — those Postman modes arrive as a Raw body with nothing in it;
  • auth types other than Bearer, Basic and API Key, which land as None. What the app supports is listed under Authentication.

Importing an environment#

Environments are imported as their own file from the Environments window. Tetiva names the environment after the name field inside the JSON, not after the filename — a file with an empty name is rejected with an error — and fills it from the values array; an entry with type: "secret" becomes a secret variable. Postman's enabled flag is not read — every variable arrives switched on.

Exporting#

Export as Postman in a collection's context menu builds a file for the whole subtree: the collection itself, nested collections, requests, headers, bodies and auth. The save dialog suggests a name like Collection name.postman_collection.json. Environments have their own export entry in the Environments window and produce Name.postman_environment.json, with secret variables marked as secret.

Keep the format's edges in mind: v2.1 describes an HTTP request, so gRPC and WebSocket have nowhere to go, scripts are not written, and a binary body — a path to a file on disk — is left out. To move your whole setup between machines, use sync rather than export.

Copy as cURL#

Next to the Send button there is a chevron, and under it a single entry: Copy as cURL. The command is built by the same pipeline that sends the real request, so the clipboard holds what would have gone over the wire:

  • {{var}} placeholders are already resolved;
  • headers are emitted in a stable order, with one -H per value for repeated headers;
  • workspace cookies matching the address are added with -b;
  • a form becomes -F (with @path for files) or -d, and a binary body becomes --data-binary @path;
  • the pre-request script runs as a dry run: its headers and variables show up in the command, but nothing is saved to the database and no history entry is created.

The entry is HTTP-only. For gRPC, GraphQL and WebSocket the app returns an error — cURL does not cover those protocols. There is no export to other languages or client libraries.

The full move from Postman, including script compatibility and how the concepts line up, is on Migrate from Postman.

updated